In [2]:
#importing some useful packages
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import cv2
%matplotlib inline
In [3]:
import glob

# prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
objp = np.zeros((6*9,3), np.float32)
objp[:,:2] = np.mgrid[0:9, 0:6].T.reshape(-1,2)

# Arrays to store object points and image points from all the images.
objpoints = [] # 3d points in real world space
imgpoints = [] # 2d points in image plane.

# Make a list of calibration images
images = glob.glob('camera_cal/*.jpg')

# Step through the list and search for chessboard corners
for idx, fname in enumerate(images):
    img = mpimg.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # Find the chessboard corners
    ret, corners = cv2.findChessboardCorners(gray, (9,6), None)

    # If found, add object points, image points
    if ret == True:
        objpoints.append(objp)
        imgpoints.append(corners)

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)

def cal_undistort(img):
    # Use cv2.calibrateCamera() and cv2.undistort()
#     gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#     ret, corners = cv2.findChessboardCorners(gray, (9,6), None)
#     img = cv2.drawChessboardCorners(img, (9,6), corners, ret)
    
    undist = cv2.undistort(img, mtx, dist, None, mtx)
    return undist
In [5]:
def print2ims(im1, im2, text1='Original Image', text2='Changed Image'):
    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
    f.tight_layout()
    ax1.imshow(im1, cmap='gray')
    ax1.set_title(text1, fontsize=50)
    ax2.imshow(im2, cmap='gray')
    ax2.set_title(text2, fontsize=50)
    plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [482]:
test_cal = mpimg.imread('camera_cal/calibration1.jpg')
undistorted = cal_undistort(test_cal)
print2ims(test_cal, undistorted, text2='Undistorted Image')
In [483]:
test_cal2 = mpimg.imread('camera_cal/calibration2.jpg')
undistorted2 = cal_undistort(test_cal2)
print2ims(test_cal2, undistorted2, text2='Undistorted Image')
In [ ]:
 
In [47]:
bottom_left = [220,720]
bottom_right = [1110, 720]
top_left = [570, 470]
top_right = [722, 470]

src = np.float32([bottom_left,bottom_right,top_right,top_left])

bottom_left2 = [320,720]
bottom_right2 = [920, 720]
top_left2 = [320, 1]
top_right2 = [920, 1]

dst = np.float32([bottom_left2,bottom_right2,top_right2,top_left2])
In [34]:
img_size = (1280, 720)
bottom_left3 = [(img_size[0] / 2) - 55, img_size[1] / 2 + 100]
bottom_right3  =  [((img_size[0] / 6) - 10), img_size[1]]
top_left3 =    [(img_size[0] * 5 / 6) + 60, img_size[1]]
top_right3 =   [(img_size[0] / 2 + 55), img_size[1] / 2 + 100]

bottom_left4 = [(img_size[0] / 4), 0]
bottom_right4=    [(img_size[0] / 4), img_size[1]]
top_left4=    [(img_size[0] * 3 / 4), img_size[1]]
top_right4=    [(img_size[0] * 3 / 4), 0]
In [35]:
src2 = np.float32([bottom_left3,bottom_right3,top_right3,top_left3])
dst2 = np.float32([bottom_left4,bottom_right4,top_right4,top_left4])
In [48]:
M = cv2.getPerspectiveTransform(src, dst)
Minv = cv2.getPerspectiveTransform(dst, src)
    
def warp(img):
    warped = cv2.warpPerspective(img, M, img_size, flags=cv2.INTER_LINEAR)
    return warped
In [500]:
image2 = mpimg.imread('test_images/straight_lines1.jpg')
undistorted = cal_undistort(image2)
print2ims(image2, undistorted, text2='Undistorted Image')
In [501]:
pts = np.array([bottom_left,bottom_right,top_right,top_left], np.int32)
pts = pts.reshape((-1,1,2))
copy = image2.copy()
cv2.polylines(copy,[pts],True,(255,0,0), thickness=3)
print2ims(image2, copy, text2 = 'Points')
In [502]:
pts = np.array([bottom_left2,bottom_right2,top_right2,top_left2], np.int32)
pts = pts.reshape((-1,1,2))
copy = warp(image2)
cv2.polylines(copy,[pts],True,(255,0,0), thickness=3)
print2ims(image2, copy,text2 = 'Warped')
In [489]:
image = mpimg.imread('test_images/test5.jpg')
In [95]:
kernel_size = 9
In [87]:
def abs_sobel_thresh(img, orient='x', sobel_kernel=15, thresh=(20, 100)):
    # Apply the following steps to img
     # Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    # Apply x or y gradient with the OpenCV Sobel() function
    # and take the absolute value
    if orient == 'x':
        abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 1, 0,ksize=sobel_kernel))
    if orient == 'y':
        abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 0, 1,ksize=sobel_kernel))
    # Rescale back to 8 bit integer
    scaled_sobel = np.uint8(255*abs_sobel/np.max(abs_sobel))
    # Create a copy and apply the threshold
    binary_output = np.zeros_like(scaled_sobel)
    # Here I'm using inclusive (>=, <=) thresholds, but exclusive is ok too
    binary_output[(scaled_sobel >= thresh[0]) & (scaled_sobel <= thresh[1])] = 1

    # Return the result
    return binary_output
In [402]:
sobelx = abs_sobel_thresh(image, orient='x', sobel_kernel=kernel_size, thresh=(30, 70))
print2ims(image, sobelx)
In [385]:
sobely = abs_sobel_thresh(image, orient='y', sobel_kernel=kernel_size, thresh=(40, 100))
print2ims(image, sobely)
In [75]:
def mag_thresh(img, sobel_kernel=9, mag_thresh=(30, 100)):
    
    # Apply the following steps to img
    # Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    # Take both Sobel x and y gradients
    sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)
    sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)
    # Calculate the gradient magnitude
    gradmag = np.sqrt(sobelx**2 + sobely**2)
    # Rescale to 8 bit
    scale_factor = np.max(gradmag)/255 
    gradmag = (gradmag/scale_factor).astype(np.uint8) 
    # Create a binary image of ones where threshold is met, zeros otherwise
    binary_output = np.zeros_like(gradmag)
    binary_output[(gradmag >= mag_thresh[0]) & (gradmag <= mag_thresh[1])] = 1

    # Return the binary image
    return binary_output
In [399]:
mag_binary = mag_thresh(image, sobel_kernel=kernel_size, mag_thresh=(60, 180))
print2ims(image, mag_binary)
In [83]:
def dir_threshold(img, sobel_kernel=15, thresh=(0, np.pi/2)):
    
    # Apply the following steps to img
    # Grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    # Calculate the x and y gradients
    sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)
    sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)
    # Take the absolute value of the gradient direction, 
    # apply a threshold, and create a binary image result
    absgraddir = np.arctan2(np.absolute(sobely), np.absolute(sobelx))
    binary_output =  np.zeros_like(absgraddir)
    binary_output[(absgraddir >= thresh[0]) & (absgraddir <= thresh[1])] = 1

    # Return the binary image
    return binary_output
In [351]:
dir_binary = dir_threshold(image, sobel_kernel=kernel_size, thresh=(np.pi/6, np.pi/2))
print2ims(image, dir_binary)
In [212]:
combined = np.zeros_like(dir_binary)
combined[((sobelx == 1) & (sobely == 1)) | ((mag_binary == 1) & (dir_binary == 1))] = 1
print2ims(image, combined)
In [490]:
combined2 = np.zeros_like(dir_binary)
combined2[(sobelx == 1) & (mag_binary == 1) & (dir_binary == 1)] = 1
print2ims(image, combined2, text2 = 'Gradient Transform')
In [359]:
combined3 = np.zeros_like(dir_binary)
combined3[(sobelx == 1) & (dir_binary == 1)] = 1
print2ims(image, combined3)
In [487]:
warped = warp(combined2)
print2ims(combined2, warped)
In [114]:
def print3ims(im1, im2, im3, text1='Image1', text2='Image2', text3='Image3'):
    f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(24, 9))
    f.tight_layout()
    ax1.imshow(im1, cmap='gray')
    ax1.set_title(text1, fontsize=50)
    ax2.imshow(im2, cmap='gray')
    ax2.set_title(text2, fontsize=50)
    ax3.imshow(im3, cmap='gray')
    ax3.set_title(text3, fontsize=50)
    plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [217]:
R = image[:,:,0]
G = image[:,:,1]
B = image[:,:,2]
print3ims(R, G, B)
In [223]:
thresh = (200, 255)
binaryR = np.zeros_like(R)
binaryR[(R > thresh[0]) & (R <= thresh[1])] = 1
binaryG = np.zeros_like(G)
binaryG[(G > thresh[0]) & (G <= thresh[1])] = 1
thresh = (120, 220)
binaryB = np.zeros_like(B)
binaryB[(B > thresh[0]) & (B <= thresh[1])] = 1
print3ims(binaryR, binaryG, binaryB)
In [225]:
combinedRGB = np.zeros_like(binary1)
combinedRGB[(binaryR == 1) | (binaryG == 1) & (binaryB == 0)] = 1
print2ims(image, combinedRGB)
In [491]:
combinedRGB2 = np.zeros_like(binary1)
combinedRGB2[(binaryR == 1) & (binaryB == 0)] = 1
print2ims(image, combinedRGB2, text2 = 'R and B Channels')
In [226]:
hls = cv2.cvtColor(image, cv2.COLOR_RGB2HLS)
H = hls[:,:,0]
L = hls[:,:,1]
S = hls[:,:,2]
print3ims(H, L, S)
In [496]:
thresh = (20, 90)
binaryH = np.zeros_like(H)
binaryH[(H > thresh[0]) & (H <= thresh[1])] = 1
thresh = (195, 220)
binaryL = np.zeros_like(L)
binaryL[(L > thresh[0]) & (L <= thresh[1])] = 1
thresh = (150, 255)
binaryS = np.zeros_like(S)
binaryS[(S > thresh[0]) & (S <= thresh[1])] = 1
print3ims(binaryH, binaryL, binaryS)
In [405]:
combinedHLS = np.zeros_like(binaryS)
combinedHLS[(binaryS == 1) | (binaryH == 1) & (binaryL == 0)] = 1
print2ims(image, combinedHLS)
In [257]:
combinedRGB_HLS = np.zeros_like(combinedRGB)
combinedRGB_HLS[(combinedRGB == 1) | (combinedHLS == 1)] = 1
print2ims(image, combinedRGB_HLS)
In [430]:
combinedRGB_S = np.zeros_like(combinedRGB2)
combinedRGB_S[(combinedRGB2 == 1) & (binaryS == 1)] = 1
print2ims(image, combinedRGB_S)
In [335]:
warped = warp(combinedRGB_S)
print2ims(combinedRGB_S, warped)
In [277]:
luv = cv2.cvtColor(image, cv2.COLOR_RGB2LUV)
L = luv[:,:,0]
U = luv[:,:,1]
V = luv[:,:,2]
print3ims(L, U, V)
In [338]:
thresh = (200, 250)
binaryL = np.zeros_like(L)
binaryL[(L > thresh[0]) & (L <= thresh[1])] = 1
print2ims(image, binaryL)
In [333]:
thresh = (110, 170)
binaryU = np.zeros_like(U)
binaryU[(U > thresh[0]) & (U <= thresh[1])] = 1
print2ims(image, binaryU)
In [298]:
thresh = (165, 255)
binaryV = np.zeros_like(V)
binaryV[(V > thresh[0]) & (V <= thresh[1])] = 1
print2ims(image, binaryV)
In [497]:
combined_LUV = np.zeros_like(binaryL)
combined_LUV[(binaryL == 1) | (binaryU == 1)| (binaryV == 1)] = 1
print2ims(image, combined_LUV, text2 = 'LUV transform')
In [498]:
combined_RGB_S_LUV = np.zeros_like(combinedRGB_S)
combined_RGB_S_LUV[(combinedRGB_S == 1) | (combined_LUV == 1) | (combined2 == 1)] = 1
print2ims(image, combined_RGB_S_LUV, text2 = 'All combined')
In [580]:
warped = warp(combined_RGB_S_LUV)
print2ims(combined_RGB_S_LUV, warped, text1 = 'Transformed', text2= 'Warped')
In [194]:
def combined_sobel_dir(image):
    sobelx = abs_sobel_thresh(image, orient='x', sobel_kernel=kernel_size, thresh=(20, 200))
    mag_binary = mag_thresh(image, sobel_kernel=kernel_size, mag_thresh=(60, 220))
    dir_binary = dir_threshold(image, sobel_kernel=kernel_size, thresh=(np.pi/6, np.pi/2))
    combined = np.zeros_like(sobelx)
    combined[(sobelx == 1) & (dir_binary == 1)] = 1
    return combined
In [462]:
def gradient_threshold(image):
    
    kernel_size = 3
    sobelx = abs_sobel_thresh(image, orient='x', sobel_kernel=kernel_size, thresh=(30, 100))
    dir_binary = dir_threshold(image, sobel_kernel=kernel_size, thresh=(np.pi/6, np.pi/2))
    mag_binary = mag_thresh(image, sobel_kernel=kernel_size, mag_thresh=(60, 180))
    combined = np.zeros_like(sobelx)
    combined[(sobelx == 1) & (mag_binary == 1) & (dir_binary == 1)] = 1
    
    R = image[:,:,0]
    G = image[:,:,1]
    B = image[:,:,2]
    thresh = (200, 255)
    binaryR = np.zeros_like(R)
    binaryR[(R > thresh[0]) & (R <= thresh[1])] = 1
    binaryG = np.zeros_like(G)
    binaryG[(G > thresh[0]) & (G <= thresh[1])] = 1
    thresh = (120, 220)
    binaryB = np.zeros_like(B)
    binaryB[(B > thresh[0]) & (B <= thresh[1])] = 1
    combinedRGB = np.zeros_like(binaryR)
    combinedRGB[(binaryR == 1) & (binaryB == 0)] = 1
    
    hls = cv2.cvtColor(image, cv2.COLOR_RGB2HLS)
    H = hls[:,:,0]
    L = hls[:,:,1]
    S = hls[:,:,2]
    thresh = (20, 90)
    binaryH = np.zeros_like(H)
    binaryH[(H > thresh[0]) & (H <= thresh[1])] = 1
    thresh = (155, 200)
    binaryL = np.zeros_like(L)
    binaryL[(L > thresh[0]) & (L <= thresh[1])] = 1
    thresh = (160, 255)
    binaryS = np.zeros_like(S)
    binaryS[(S > thresh[0]) & (S <= thresh[1])] = 1
    
    combinedRGB_S = np.zeros_like(combinedRGB)
    combinedRGB_S[(combinedRGB == 1) & (binaryS == 1)] = 1
    
    luv = cv2.cvtColor(image, cv2.COLOR_RGB2LUV)
    L = luv[:,:,0]
    U = luv[:,:,1]
    V = luv[:,:,2]
    thresh = (200, 250)
    binaryL = np.zeros_like(L)
    binaryL[(L > thresh[0]) & (L <= thresh[1])] = 1
    thresh = (110, 170)
    binaryU = np.zeros_like(U)
    binaryU[(U > thresh[0]) & (U <= thresh[1])] = 1
    thresh = (165, 255)
    binaryV = np.zeros_like(V)
    binaryV[(V > thresh[0]) & (V <= thresh[1])] = 1
    combined_LUV = np.zeros_like(binaryL)
    combined_LUV[(binaryL == 1) | (binaryU == 1)| (binaryV == 1)] = 1

    combined_RGB_S_LUV = np.zeros_like(combinedRGB)
    combined_RGB_S_LUV[(combinedRGB_S == 1) | (combined_LUV == 1) | (combined == 1)] = 1
    #combined_RGB_S_LUV[((combinedRGB == 1) & (combined_LUV == 1)) |  ((binaryS == 1) | (combined == 1))] = 1
    
    return combined_RGB_S_LUV
In [463]:
test = glob.glob('test_images/*.jpg')
count = 1
fig=plt.figure(figsize=(10, 10))
for img in test:
    
    image = mpimg.imread(img)
    image = cal_undistort(image)
    fig.add_subplot(4, 6, count)
    plt.imshow(image)
    count += 1
    
    res = gradient_threshold(image)
    fig.add_subplot(4, 6, count)
    plt.imshow(res, cmap = 'gray')
    count += 1
    
    warped = warp(res)
    fig.add_subplot(4, 6, count)
    plt.imshow(warped, cmap = 'gray')
    if(count < 22):
        count += 1
    
plt.show()
In [567]:
warped = warp(combined_RGB_S_LUV)
histogram = np.sum(warped[warped.shape[0]//2:,:], axis=0)
plt.plot(histogram)
plt.show()
In [573]:
hist = mpimg.imread('output_images/hist.png')
print(hist.shape)
print2ims(warped, hist, text1 = 'Warped', text2 = 'Histogram')
(252, 378, 4)
In [576]:
def findFit(binary_warped):
    # Assuming you have created a warped binary image called "binary_warped"
    # Take a histogram of the bottom half of the image
    histogram = np.sum(binary_warped[binary_warped.shape[0]//2:,:], axis=0)
    # Create an output image to draw on and  visualize the result
    out_img = np.dstack((binary_warped, binary_warped, binary_warped))*255
    # Find the peak of the left and right halves of the histogram
    # These will be the starting point for the left and right lines
    midpoint = np.int(histogram.shape[0]/2)
    leftx_base = np.argmax(histogram[:midpoint])
    rightx_base = np.argmax(histogram[midpoint:]) + midpoint

    # Choose the number of sliding windows
    nwindows = 9
    # Set height of windows
    window_height = np.int(binary_warped.shape[0]/nwindows)
    # Identify the x and y positions of all nonzero pixels in the image
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    # Current positions to be updated for each window
    leftx_current = leftx_base
    rightx_current = rightx_base
    # Set the width of the windows +/- margin
    margin = 100
    # Set minimum number of pixels found to recenter window
    minpix = 50
    # Create empty lists to receive left and right lane pixel indices
    left_lane_inds = []
    right_lane_inds = []

    # Step through the windows one by one
    for window in range(nwindows):
        # Identify window boundaries in x and y (and right and left)
        win_y_low = binary_warped.shape[0] - (window+1)*window_height
        win_y_high = binary_warped.shape[0] - window*window_height
        win_xleft_low = leftx_current - margin
        win_xleft_high = leftx_current + margin
        win_xright_low = rightx_current - margin
        win_xright_high = rightx_current + margin
        # Draw the windows on the visualization image
        cv2.rectangle(out_img,(win_xleft_low,win_y_low),(win_xleft_high,win_y_high),
        (0,255,0), 2) 
        cv2.rectangle(out_img,(win_xright_low,win_y_low),(win_xright_high,win_y_high),
        (0,255,0), 2) 
        # Identify the nonzero pixels in x and y within the window
        good_left_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & 
        (nonzerox >= win_xleft_low) &  (nonzerox < win_xleft_high)).nonzero()[0]
        good_right_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & 
        (nonzerox >= win_xright_low) &  (nonzerox < win_xright_high)).nonzero()[0]
        # Append these indices to the lists
        left_lane_inds.append(good_left_inds)
        right_lane_inds.append(good_right_inds)
        # If you found > minpix pixels, recenter next window on their mean position
        if len(good_left_inds) > minpix:
            leftx_current = np.int(np.mean(nonzerox[good_left_inds]))
        if len(good_right_inds) > minpix:        
            rightx_current = np.int(np.mean(nonzerox[good_right_inds]))

    # Concatenate the arrays of indices
    left_lane_inds = np.concatenate(left_lane_inds)
    right_lane_inds = np.concatenate(right_lane_inds)

    # Extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds] 

    # Fit a second order polynomial to each
    left_fit = np.polyfit(lefty, leftx, 2)
    right_fit = np.polyfit(righty, rightx, 2)
    
    return left_fit, right_fit, nonzerox, nonzeroy, left_lane_inds, right_lane_inds
In [530]:
left_fit, right_fit, nonzerox, nonzeroy, left_lane_inds, right_lane_inds = findFit(warped)
# Generate x and y values for plotting
ploty = np.linspace(0, warped.shape[0]-1, warped.shape[0] )
left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]

out_img[nonzeroy[left_lane_inds], nonzerox[left_lane_inds]] = [255, 0, 0]
out_img[nonzeroy[right_lane_inds], nonzerox[right_lane_inds]] = [0, 0, 255]
plt.imshow(out_img)
plt.plot(left_fitx, ploty, color='yellow')
plt.plot(right_fitx, ploty, color='yellow')
plt.xlim(0, 1280)
plt.ylim(720, 0)
(720, 1280)
Out[530]:
(720, 0)
In [542]:
def nextLines(binary_warped, left_fit, right_fit):
    # Assume you now have a new warped binary image 
    # from the next frame of video (also called "binary_warped")
    # It's now much easier to find line pixels!
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    margin = 100
    left_lane_inds = ((nonzerox > (left_fit[0]*(nonzeroy**2) + left_fit[1]*nonzeroy + 
    left_fit[2] - margin)) & (nonzerox < (left_fit[0]*(nonzeroy**2) + 
    left_fit[1]*nonzeroy + left_fit[2] + margin))) 

    right_lane_inds = ((nonzerox > (right_fit[0]*(nonzeroy**2) + right_fit[1]*nonzeroy + 
    right_fit[2] - margin)) & (nonzerox < (right_fit[0]*(nonzeroy**2) + 
    right_fit[1]*nonzeroy + right_fit[2] + margin)))  

    # Again, extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds]
    # Fit a second order polynomial to each
    left_fit = np.polyfit(lefty, leftx, 2)
    right_fit = np.polyfit(righty, rightx, 2)
    # Generate x and y values for plotting
    
    return left_fit, right_fit, nonzerox, nonzeroy, left_lane_inds, right_lane_inds
In [543]:
margin = 100
print(type(warped))
left_fit, right_fit, nonzerox, nonzeroy, left_lane_inds, right_lane_inds = nextLines(warped, left_fit, right_fit)

ploty = np.linspace(0, warped.shape[0]-1, warped.shape[0] )
left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]

# Create an image to draw on and an image to show the selection window
out_img = np.dstack((warped, warped, warped))*255
window_img = np.zeros_like(out_img)
# Color in left and right line pixels
out_img[nonzeroy[left_lane_inds], nonzerox[left_lane_inds]] = [255, 0, 0]
out_img[nonzeroy[right_lane_inds], nonzerox[right_lane_inds]] = [0, 0, 255]

# Generate a polygon to illustrate the search window area
# And recast the x and y points into usable format for cv2.fillPoly()
left_line_window1 = np.array([np.transpose(np.vstack([left_fitx-margin, ploty]))])
left_line_window2 = np.array([np.flipud(np.transpose(np.vstack([left_fitx+margin, 
                              ploty])))])
left_line_pts = np.hstack((left_line_window1, left_line_window2))
right_line_window1 = np.array([np.transpose(np.vstack([right_fitx-margin, ploty]))])
right_line_window2 = np.array([np.flipud(np.transpose(np.vstack([right_fitx+margin, 
                              ploty])))])
right_line_pts = np.hstack((right_line_window1, right_line_window2))

# Draw the lane onto the warped blank image
cv2.fillPoly(window_img, np.int_([left_line_pts]), (0,255, 0))
cv2.fillPoly(window_img, np.int_([right_line_pts]), (0,255, 0))
result = cv2.addWeighted(out_img, 1, window_img, 0.3, 0)
plt.imshow(result)
plt.plot(left_fitx, ploty, color='yellow')
plt.plot(right_fitx, ploty, color='yellow')
plt.xlim(0, 1280)
plt.ylim(720, 0)
<class 'numpy.ndarray'>
Out[543]:
(720, 0)
In [552]:
def drawLines(binary_warped, left_fit, right_fit):
    
    ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )
    left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
    right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]
    
    lines.addLeft(left_fitx)
    lines.addRight(right_fitx)
    left_fitx, right_fitx = lines.getMean()
    
    warp_zero = np.zeros_like(binary_warped).astype(np.uint8)
    #warp_zero = np.zeros_like(test5)
    color_warp = np.dstack((warp_zero, warp_zero, warp_zero))

    # Recast the x and y points into usable format for cv2.fillPoly()
    pts_left = np.array([np.transpose(np.vstack([left_fitx, ploty]))])
    pts_right = np.array([np.flipud(np.transpose(np.vstack([right_fitx, ploty])))])
    pts = np.hstack((pts_left, pts_right))

    # Draw the lane onto the warped blank image
    cv2.fillPoly(color_warp, np.int_([pts]), (0,255, 0))

    # Warp the blank back to original image space using inverse perspective matrix (Minv)
    newwarp = cv2.warpPerspective(color_warp, Minv, (binary_warped.shape[1], binary_warped.shape[0]), flags=cv2.INTER_LINEAR)
    
    left_curve, right_curve = findCurv(ploty, left_fitx, right_fitx)
    
    # ------- Find the curvature here and place it on the image: -------
        
    font = cv2.FONT_HERSHEY_SIMPLEX
    curvature = "Radius of Curvature: {} m".format(int((left_curve + right_curve)/2))
    cv2.putText(newwarp,curvature,(100,50), font, 1,(0,255,255),2)
    
    # ------- Find Car Position -----
    xm_per_pix = 3.7/700
    lane_center = (right_fitx[-1] + left_fitx[-1]) / 2.0 
    #line_center = (np.median(right_fitx) - np.median(left_fitx)) / 2.0 + np.median(left_fitx)
    camera_position = binary_warped.shape[1] / 2
    offset = (camera_position - lane_center) * xm_per_pix
    
    position = "Position offset: {: .4f} m".format((offset))
    cv2.putText(newwarp,position,(100,150), font, 1,(0,255,255),2)
    
    return newwarp
In [559]:
class Lines():
    def __init__(self):
        self.left_x = []
        self.right_x = []
        self.left_c = []
        self.right_c = []
        self.left_fit = []
        self.right_fit = []
        self.hasLine = False
        
    def addLeft(self, left):
        self.left_x.append(left)
        if(len(self.left_x) > 10):
            self.left_x = self.left_x[1:]
      
    def addRight(self, right):
        self.right_x.append(right)
        if(len(self.right_x) > 10):
            self.right_x = self.right_x[1:]
            
    def addFit(self, left_fit, right_fit):
        self.left_fit = left_fit
        self.right_fit = right_fit
            
    def addLeftCurve(self, left):
        self.left_c.append(left)
        if(len(self.left_c) > 15):
            self.left_c = self.left_c[1:]
            
    def addRightCurve(self, right):
        self.right_c.append(right)
        if(len(self.right_c) > 15):
            self.right_c = self.right_c[1:]
    
    def getMean(self):
        return sum(self.left_x)/len(self.left_x), sum(self.right_x)/len(self.right_x)
    
    def getCurve(self):
        return sum(self.left_c)/len(self.left_c), sum(self.right_c)/len(self.right_c)
In [464]:
def findCurv(ploty, left_fitx, right_fitx):
    y_eval = np.max(ploty)
    # Define conversions in x and y from pixels space to meters
    ym_per_pix = 30/720 # meters per pixel in y dimension
    xm_per_pix = 3.7/700 # meters per pixel in x dimension
    
    # Fit new polynomials to x,y in world space
    left_fit_cr = np.polyfit(ploty*ym_per_pix, left_fitx*xm_per_pix, 2)
    right_fit_cr = np.polyfit(ploty*ym_per_pix, right_fitx*xm_per_pix, 2)
    # Calculate the new radii of curvature
    left_curve = ((1 + (2*left_fit_cr[0]*y_eval*ym_per_pix + left_fit_cr[1])**2)**1.5) / np.absolute(2*left_fit_cr[0])
    right_curve = ((1 + (2*right_fit_cr[0]*y_eval*ym_per_pix + right_fit_cr[1])**2)**1.5) / np.absolute(2*right_fit_cr[0])
    
    return left_curve, right_curve
In [557]:
def process_image(image):
    
    undist = cal_undistort(image)
    combined = gradient_threshold(undist)
    warped = warp(combined)
    
    if(lines.hasLine):
        l_fit, r_fit, _, _, _, _ = nextLines(warped, lines.left_fit, lines.right_fit)
        lines.addFit(l_fit, r_fit)
    else:
        l_fit, r_fit, _, _, _, _ = findFit(warped)
        lines.addFit(l_fit, r_fit)
        lines.hasLine = True
    
    res = drawLines(warped, lines.left_fit, lines.right_fit)
    
    #_, _, _, _, lined = findLines(warped)
    # Combine the result with the original image
    result = cv2.addWeighted(image, 1, res, 0.3, 0)
    return result
In [575]:
test = glob.glob('test_images/*.jpg')
count = 1
fig=plt.figure(figsize=(12, 12))
for img in test:
    lines = Lines()
    image = mpimg.imread(img)
    fig.add_subplot(4, 4, count)
    plt.imshow(image)
    count += 1
    
    res = process_image(image)
    fig.add_subplot(4, 4, count)
    plt.imshow(res, cmap = 'gray')
    count += 1
    
plt.show()
(720, 1280)
(720, 1280)
(720, 1280)
(720, 1280)
(720, 1280)
(720, 1280)
(720, 1280)
(720, 1280)
In [ ]:
 
In [577]:
import imageio
imageio.plugins.ffmpeg.download()
from moviepy.editor import VideoFileClip
from IPython.display import HTML
In [578]:
lines = Lines()
output = 'project_video_output20-30.mp4'
## You may also uncomment the following line for a subclip of the first 5 seconds
clip1 = VideoFileClip("project_video.mp4").subclip(20,30)
#clip1 = VideoFileClip("project_video.mp4")
white_clip = clip1.fl_image(process_image) #NOTE: this function expects color images!!
white_clip.write_videofile(output, audio=False, verbose=False)

  0%|          | 0/251 [00:00<?, ?it/s]

  0%|          | 1/251 [00:00<01:16,  3.26it/s]

  1%|          | 2/251 [00:00<01:17,  3.20it/s]

  1%|          | 3/251 [00:00<01:15,  3.28it/s]

  2%|▏         | 4/251 [00:01<01:17,  3.18it/s]

  2%|▏         | 5/251 [00:01<01:16,  3.23it/s]

  2%|▏         | 6/251 [00:01<01:17,  3.17it/s]

  3%|▎         | 7/251 [00:02<01:18,  3.13it/s]

  3%|▎         | 8/251 [00:02<01:16,  3.16it/s]
  4%|▎         | 9/251 [00:02<01:17,  3.13it/s]
  4%|▍         | 10/251 [00:03<01:14,  3.25it/s]
  4%|▍         | 11/251 [00:03<01:13,  3.27it/s]
  5%|▍         | 12/251 [00:03<01:13,  3.27it/s]
  5%|▌         | 13/251 [00:04<01:12,  3.27it/s]
  6%|▌         | 14/251 [00:04<01:11,  3.31it/s]
  6%|▌         | 15/251 [00:04<01:11,  3.32it/s]
  6%|▋         | 16/251 [00:04<01:08,  3.41it/s]
  7%|▋         | 17/251 [00:05<01:08,  3.41it/s]
  7%|▋         | 18/251 [00:05<01:09,  3.36it/s]
  8%|▊         | 19/251 [00:05<01:12,  3.22it/s]
  8%|▊         | 20/251 [00:06<01:15,  3.05it/s]
  8%|▊         | 21/251 [00:06<01:18,  2.94it/s]
  9%|▉         | 22/251 [00:06<01:20,  2.84it/s]
  9%|▉         | 23/251 [00:07<01:15,  3.01it/s]
 10%|▉         | 24/251 [00:07<01:16,  2.98it/s]
 10%|▉         | 25/251 [00:07<01:16,  2.94it/s]
 10%|█         | 26/251 [00:08<01:15,  2.99it/s]
 11%|█         | 27/251 [00:08<01:11,  3.14it/s]
 11%|█         | 28/251 [00:08<01:13,  3.03it/s]
 12%|█▏        | 29/251 [00:09<01:14,  2.97it/s]
 12%|█▏        | 30/251 [00:09<01:14,  2.95it/s]
 12%|█▏        | 31/251 [00:09<01:11,  3.09it/s]
 13%|█▎        | 32/251 [00:10<01:08,  3.18it/s]
 13%|█▎        | 33/251 [00:10<01:09,  3.14it/s]
 14%|█▎        | 34/251 [00:10<01:06,  3.24it/s]
 14%|█▍        | 35/251 [00:11<01:05,  3.28it/s]
 14%|█▍        | 36/251 [00:11<01:04,  3.32it/s]
 15%|█▍        | 37/251 [00:11<01:04,  3.34it/s]
 15%|█▌        | 38/251 [00:11<01:03,  3.35it/s]
 16%|█▌        | 39/251 [00:12<01:18,  2.71it/s]
 16%|█▌        | 40/251 [00:12<01:22,  2.55it/s]
 16%|█▋        | 41/251 [00:13<01:16,  2.74it/s]
 17%|█▋        | 42/251 [00:13<01:14,  2.82it/s]
 17%|█▋        | 43/251 [00:13<01:12,  2.88it/s]
 18%|█▊        | 44/251 [00:14<01:10,  2.95it/s]
 18%|█▊        | 45/251 [00:14<01:06,  3.09it/s]
 18%|█▊        | 46/251 [00:14<01:05,  3.15it/s]
 19%|█▊        | 47/251 [00:15<01:12,  2.82it/s]
 19%|█▉        | 48/251 [00:15<01:10,  2.90it/s]
 20%|█▉        | 49/251 [00:15<01:06,  3.04it/s]
 20%|█▉        | 50/251 [00:16<01:05,  3.06it/s]
 20%|██        | 51/251 [00:16<01:07,  2.97it/s]
 21%|██        | 52/251 [00:16<01:12,  2.74it/s]
 21%|██        | 53/251 [00:17<01:10,  2.79it/s]
 22%|██▏       | 54/251 [00:17<01:12,  2.70it/s]
 22%|██▏       | 55/251 [00:18<01:14,  2.62it/s]
 22%|██▏       | 56/251 [00:18<01:20,  2.41it/s]
 23%|██▎       | 57/251 [00:19<01:20,  2.42it/s]
 23%|██▎       | 58/251 [00:19<01:15,  2.55it/s]
 24%|██▎       | 59/251 [00:19<01:11,  2.67it/s]
 24%|██▍       | 60/251 [00:20<01:08,  2.78it/s]
 24%|██▍       | 61/251 [00:20<01:10,  2.69it/s]
 25%|██▍       | 62/251 [00:20<01:06,  2.86it/s]
 25%|██▌       | 63/251 [00:21<01:03,  2.98it/s]
 25%|██▌       | 64/251 [00:21<01:06,  2.82it/s]
 26%|██▌       | 65/251 [00:21<01:02,  2.99it/s]
 26%|██▋       | 66/251 [00:22<01:01,  3.01it/s]
 27%|██▋       | 67/251 [00:22<00:59,  3.11it/s]
 27%|██▋       | 68/251 [00:22<00:58,  3.15it/s]
 27%|██▋       | 69/251 [00:22<00:56,  3.22it/s]
 28%|██▊       | 70/251 [00:23<00:55,  3.28it/s]
 28%|██▊       | 71/251 [00:23<00:54,  3.32it/s]
 29%|██▊       | 72/251 [00:23<00:57,  3.14it/s]
 29%|██▉       | 73/251 [00:24<01:01,  2.88it/s]
 29%|██▉       | 74/251 [00:24<01:04,  2.76it/s]
 30%|██▉       | 75/251 [00:25<01:02,  2.80it/s]
 30%|███       | 76/251 [00:25<01:02,  2.82it/s]
 31%|███       | 77/251 [00:25<01:00,  2.90it/s]
 31%|███       | 78/251 [00:26<01:02,  2.79it/s]
 31%|███▏      | 79/251 [00:26<00:59,  2.87it/s]
 32%|███▏      | 80/251 [00:26<00:57,  2.98it/s]
 32%|███▏      | 81/251 [00:27<00:59,  2.84it/s]
 33%|███▎      | 82/251 [00:27<00:56,  3.00it/s]
 33%|███▎      | 83/251 [00:27<00:57,  2.90it/s]
 33%|███▎      | 84/251 [00:28<01:00,  2.78it/s]
 34%|███▍      | 85/251 [00:28<00:56,  2.94it/s]
 34%|███▍      | 86/251 [00:28<00:57,  2.86it/s]
 35%|███▍      | 87/251 [00:29<00:57,  2.87it/s]
 35%|███▌      | 88/251 [00:29<00:55,  2.93it/s]
 35%|███▌      | 89/251 [00:29<00:53,  3.04it/s]
 36%|███▌      | 90/251 [00:30<00:50,  3.17it/s]
 36%|███▋      | 91/251 [00:30<00:48,  3.27it/s]
 37%|███▋      | 92/251 [00:30<00:56,  2.81it/s]
 37%|███▋      | 93/251 [00:31<00:56,  2.78it/s]
 37%|███▋      | 94/251 [00:31<00:57,  2.75it/s]
 38%|███▊      | 95/251 [00:31<00:57,  2.71it/s]
 38%|███▊      | 96/251 [00:32<00:54,  2.86it/s]
 39%|███▊      | 97/251 [00:32<00:52,  2.94it/s]
 39%|███▉      | 98/251 [00:32<00:49,  3.08it/s]
 39%|███▉      | 99/251 [00:33<00:47,  3.21it/s]
 40%|███▉      | 100/251 [00:33<00:46,  3.27it/s]
 40%|████      | 101/251 [00:33<00:45,  3.28it/s]
 41%|████      | 102/251 [00:34<00:44,  3.36it/s]
 41%|████      | 103/251 [00:34<00:43,  3.39it/s]
 41%|████▏     | 104/251 [00:34<00:42,  3.42it/s]
 42%|████▏     | 105/251 [00:34<00:42,  3.40it/s]
 42%|████▏     | 106/251 [00:35<00:43,  3.32it/s]
 43%|████▎     | 107/251 [00:35<00:49,  2.89it/s]
 43%|████▎     | 108/251 [00:36<00:50,  2.81it/s]
 43%|████▎     | 109/251 [00:36<00:54,  2.59it/s]
 44%|████▍     | 110/251 [00:36<00:53,  2.63it/s]
 44%|████▍     | 111/251 [00:37<00:52,  2.67it/s]
 45%|████▍     | 112/251 [00:37<00:48,  2.87it/s]
 45%|████▌     | 113/251 [00:37<00:46,  2.99it/s]
 45%|████▌     | 114/251 [00:38<00:43,  3.14it/s]
 46%|████▌     | 115/251 [00:38<00:41,  3.25it/s]
 46%|████▌     | 116/251 [00:38<00:40,  3.35it/s]
 47%|████▋     | 117/251 [00:39<00:40,  3.31it/s]
 47%|████▋     | 118/251 [00:39<00:40,  3.26it/s]
 47%|████▋     | 119/251 [00:39<00:47,  2.80it/s]
 48%|████▊     | 120/251 [00:40<00:47,  2.78it/s]
 48%|████▊     | 121/251 [00:40<00:50,  2.57it/s]
 49%|████▊     | 122/251 [00:41<00:49,  2.59it/s]
 49%|████▉     | 123/251 [00:41<00:49,  2.60it/s]
 49%|████▉     | 124/251 [00:41<00:45,  2.78it/s]
 50%|████▉     | 125/251 [00:42<00:48,  2.60it/s]
 50%|█████     | 126/251 [00:42<00:47,  2.66it/s]
 51%|█████     | 127/251 [00:42<00:45,  2.75it/s]
 51%|█████     | 128/251 [00:43<00:42,  2.88it/s]
 51%|█████▏    | 129/251 [00:43<00:42,  2.87it/s]
 52%|█████▏    | 130/251 [00:43<00:42,  2.86it/s]
 52%|█████▏    | 131/251 [00:44<00:41,  2.91it/s]
 53%|█████▎    | 132/251 [00:44<00:43,  2.76it/s]
 53%|█████▎    | 133/251 [00:44<00:42,  2.78it/s]
 53%|█████▎    | 134/251 [00:45<00:40,  2.88it/s]
 54%|█████▍    | 135/251 [00:45<00:40,  2.85it/s]
 54%|█████▍    | 136/251 [00:45<00:38,  2.97it/s]
 55%|█████▍    | 137/251 [00:46<00:41,  2.72it/s]
 55%|█████▍    | 138/251 [00:47<00:57,  1.96it/s]
 55%|█████▌    | 139/251 [00:47<01:00,  1.86it/s]
 56%|█████▌    | 140/251 [00:48<00:57,  1.92it/s]
 56%|█████▌    | 141/251 [00:48<00:54,  2.01it/s]
 57%|█████▋    | 142/251 [00:49<00:55,  1.97it/s]
 57%|█████▋    | 143/251 [00:49<00:54,  2.00it/s]
 57%|█████▋    | 144/251 [00:50<00:53,  1.99it/s]
 58%|█████▊    | 145/251 [00:50<00:53,  1.99it/s]
 58%|█████▊    | 146/251 [00:51<00:48,  2.17it/s]
 59%|█████▊    | 147/251 [00:51<00:44,  2.36it/s]
 59%|█████▉    | 148/251 [00:51<00:41,  2.47it/s]
 59%|█████▉    | 149/251 [00:52<00:38,  2.62it/s]
 60%|█████▉    | 150/251 [00:52<00:35,  2.82it/s]
 60%|██████    | 151/251 [00:52<00:33,  2.99it/s]
 61%|██████    | 152/251 [00:52<00:31,  3.14it/s]
 61%|██████    | 153/251 [00:53<00:30,  3.20it/s]
 61%|██████▏   | 154/251 [00:53<00:30,  3.18it/s]
 62%|██████▏   | 155/251 [00:53<00:30,  3.13it/s]
 62%|██████▏   | 156/251 [00:54<00:30,  3.07it/s]
 63%|██████▎   | 157/251 [00:54<00:31,  3.03it/s]
 63%|██████▎   | 158/251 [00:55<00:35,  2.64it/s]
 63%|██████▎   | 159/251 [00:55<00:39,  2.35it/s]
 64%|██████▎   | 160/251 [00:56<00:38,  2.35it/s]
 64%|██████▍   | 161/251 [00:56<00:34,  2.58it/s]
 65%|██████▍   | 162/251 [00:56<00:32,  2.72it/s]
 65%|██████▍   | 163/251 [00:57<00:35,  2.51it/s]
 65%|██████▌   | 164/251 [00:57<00:34,  2.51it/s]
 66%|██████▌   | 165/251 [00:57<00:32,  2.62it/s]
 66%|██████▌   | 166/251 [00:58<00:30,  2.79it/s]
 67%|██████▋   | 167/251 [00:58<00:30,  2.75it/s]
 67%|██████▋   | 168/251 [00:58<00:28,  2.91it/s]
 67%|██████▋   | 169/251 [00:59<00:27,  3.01it/s]
 68%|██████▊   | 170/251 [00:59<00:25,  3.16it/s]
 68%|██████▊   | 171/251 [00:59<00:24,  3.28it/s]
 69%|██████▊   | 172/251 [01:00<00:23,  3.34it/s]
 69%|██████▉   | 173/251 [01:00<00:23,  3.35it/s]
 69%|██████▉   | 174/251 [01:00<00:22,  3.40it/s]
 70%|██████▉   | 175/251 [01:00<00:22,  3.44it/s]
 70%|███████   | 176/251 [01:01<00:21,  3.43it/s]
 71%|███████   | 177/251 [01:01<00:21,  3.37it/s]
 71%|███████   | 178/251 [01:01<00:21,  3.44it/s]
 71%|███████▏  | 179/251 [01:02<00:20,  3.44it/s]
 72%|███████▏  | 180/251 [01:02<00:20,  3.44it/s]
 72%|███████▏  | 181/251 [01:02<00:20,  3.34it/s]
 73%|███████▎  | 182/251 [01:02<00:20,  3.38it/s]
 73%|███████▎  | 183/251 [01:03<00:19,  3.44it/s]
 73%|███████▎  | 184/251 [01:03<00:19,  3.51it/s]
 74%|███████▎  | 185/251 [01:03<00:19,  3.47it/s]
 74%|███████▍  | 186/251 [01:04<00:19,  3.41it/s]
 75%|███████▍  | 187/251 [01:04<00:18,  3.47it/s]
 75%|███████▍  | 188/251 [01:04<00:18,  3.43it/s]
 75%|███████▌  | 189/251 [01:05<00:22,  2.74it/s]
 76%|███████▌  | 190/251 [01:05<00:24,  2.46it/s]
 76%|███████▌  | 191/251 [01:06<00:25,  2.35it/s]
 76%|███████▋  | 192/251 [01:06<00:25,  2.35it/s]
 77%|███████▋  | 193/251 [01:07<00:24,  2.41it/s]
 77%|███████▋  | 194/251 [01:07<00:23,  2.43it/s]
 78%|███████▊  | 195/251 [01:07<00:22,  2.52it/s]
 78%|███████▊  | 196/251 [01:08<00:22,  2.41it/s]
 78%|███████▊  | 197/251 [01:08<00:22,  2.45it/s]
 79%|███████▉  | 198/251 [01:08<00:20,  2.56it/s]
 79%|███████▉  | 199/251 [01:09<00:21,  2.39it/s]
 80%|███████▉  | 200/251 [01:10<00:25,  1.98it/s]
 80%|████████  | 201/251 [01:10<00:26,  1.88it/s]
 80%|████████  | 202/251 [01:11<00:23,  2.05it/s]
 81%|████████  | 203/251 [01:11<00:21,  2.20it/s]
 81%|████████▏ | 204/251 [01:12<00:21,  2.16it/s]
 82%|████████▏ | 205/251 [01:12<00:21,  2.15it/s]
 82%|████████▏ | 206/251 [01:12<00:20,  2.22it/s]
 82%|████████▏ | 207/251 [01:13<00:18,  2.37it/s]
 83%|████████▎ | 208/251 [01:13<00:19,  2.18it/s]
 83%|████████▎ | 209/251 [01:14<00:19,  2.13it/s]
 84%|████████▎ | 210/251 [01:14<00:17,  2.36it/s]
 84%|████████▍ | 211/251 [01:15<00:16,  2.35it/s]
 84%|████████▍ | 212/251 [01:15<00:16,  2.33it/s]
 85%|████████▍ | 213/251 [01:15<00:15,  2.48it/s]
 85%|████████▌ | 214/251 [01:16<00:13,  2.69it/s]
 86%|████████▌ | 215/251 [01:16<00:13,  2.66it/s]
 86%|████████▌ | 216/251 [01:16<00:12,  2.81it/s]
 86%|████████▋ | 217/251 [01:17<00:11,  2.99it/s]
 87%|████████▋ | 218/251 [01:17<00:12,  2.57it/s]
 87%|████████▋ | 219/251 [01:18<00:12,  2.53it/s]
 88%|████████▊ | 220/251 [01:18<00:12,  2.54it/s]
 88%|████████▊ | 221/251 [01:18<00:11,  2.67it/s]
 88%|████████▊ | 222/251 [01:19<00:10,  2.75it/s]
 89%|████████▉ | 223/251 [01:19<00:09,  2.94it/s]
 89%|████████▉ | 224/251 [01:19<00:08,  3.07it/s]
 90%|████████▉ | 225/251 [01:19<00:08,  3.16it/s]
 90%|█████████ | 226/251 [01:20<00:07,  3.21it/s]
 90%|█████████ | 227/251 [01:20<00:07,  3.33it/s]
 91%|█████████ | 228/251 [01:20<00:06,  3.33it/s]
 91%|█████████ | 229/251 [01:21<00:06,  3.38it/s]
 92%|█████████▏| 230/251 [01:21<00:06,  3.10it/s]
 92%|█████████▏| 231/251 [01:21<00:06,  3.13it/s]
 92%|█████████▏| 232/251 [01:22<00:05,  3.17it/s]
 93%|█████████▎| 233/251 [01:22<00:05,  3.27it/s]
 93%|█████████▎| 234/251 [01:22<00:05,  3.38it/s]
 94%|█████████▎| 235/251 [01:23<00:04,  3.23it/s]
 94%|█████████▍| 236/251 [01:23<00:05,  2.97it/s]
 94%|█████████▍| 237/251 [01:23<00:04,  3.06it/s]
 95%|█████████▍| 238/251 [01:24<00:04,  3.16it/s]
 95%|█████████▌| 239/251 [01:24<00:03,  3.06it/s]
 96%|█████████▌| 240/251 [01:24<00:03,  3.09it/s]
 96%|█████████▌| 241/251 [01:25<00:03,  2.94it/s]
 96%|█████████▋| 242/251 [01:25<00:03,  2.90it/s]
 97%|█████████▋| 243/251 [01:25<00:02,  2.91it/s]
 97%|█████████▋| 244/251 [01:26<00:02,  2.97it/s]
 98%|█████████▊| 245/251 [01:26<00:01,  3.11it/s]
 98%|█████████▊| 246/251 [01:26<00:01,  3.21it/s]
 98%|█████████▊| 247/251 [01:26<00:01,  3.33it/s]
 99%|█████████▉| 248/251 [01:27<00:00,  3.35it/s]
 99%|█████████▉| 249/251 [01:27<00:00,  3.40it/s]
100%|█████████▉| 250/251 [01:27<00:00,  3.46it/s]
In [579]:
HTML("""
<video width="960" height="540" controls>
  <source src="{0}">
</video>
""".format(output))
Out[579]:
In [562]:
lines = Lines()
output2 = 'project_video_output.mp4'
## You may also uncomment the following line for a subclip of the first 5 seconds
#clip1 = VideoFileClip("project_video.mp4").subclip(20,30)
clip1 = VideoFileClip("project_video.mp4")
white_clip = clip1.fl_image(process_image) #NOTE: this function expects color images!!
white_clip.write_videofile(output2, audio=False, verbose=False)

  0%|          | 0/1261 [00:00<?, ?it/s]
(720, 1280)

  0%|          | 1/1261 [00:00<07:03,  2.98it/s]

  0%|          | 2/1261 [00:00<07:07,  2.95it/s]

  0%|          | 3/1261 [00:00<06:52,  3.05it/s]

  0%|          | 4/1261 [00:01<06:54,  3.03it/s]

  0%|          | 5/1261 [00:01<06:52,  3.05it/s]

  0%|          | 6/1261 [00:01<06:41,  3.12it/s]

  1%|          | 7/1261 [00:02<06:41,  3.13it/s]

  1%|          | 8/1261 [00:02<06:31,  3.20it/s]

  1%|          | 9/1261 [00:02<06:36,  3.16it/s]

  1%|          | 10/1261 [00:03<06:21,  3.28it/s]

  1%|          | 11/1261 [00:03<06:35,  3.16it/s]

  1%|          | 12/1261 [00:03<06:29,  3.21it/s]

  1%|          | 13/1261 [00:04<06:17,  3.31it/s]

  1%|          | 14/1261 [00:04<06:16,  3.31it/s]

  1%|          | 15/1261 [00:04<06:20,  3.28it/s]

  1%|▏         | 16/1261 [00:04<06:12,  3.34it/s]

  1%|▏         | 17/1261 [00:05<07:45,  2.67it/s]

  1%|▏         | 18/1261 [00:05<07:26,  2.78it/s]

  2%|▏         | 19/1261 [00:06<07:21,  2.82it/s]

  2%|▏         | 20/1261 [00:06<07:07,  2.90it/s]

  2%|▏         | 21/1261 [00:06<07:53,  2.62it/s]

  2%|▏         | 22/1261 [00:07<08:29,  2.43it/s]

  2%|▏         | 23/1261 [00:07<08:07,  2.54it/s]

  2%|▏         | 24/1261 [00:08<07:39,  2.69it/s]

  2%|▏         | 25/1261 [00:08<07:09,  2.88it/s]

  2%|▏         | 26/1261 [00:08<06:49,  3.02it/s]

  2%|▏         | 27/1261 [00:08<06:24,  3.21it/s]

  2%|▏         | 28/1261 [00:09<06:12,  3.31it/s]

  2%|▏         | 29/1261 [00:09<06:07,  3.36it/s]

  2%|▏         | 30/1261 [00:09<06:02,  3.39it/s]

  2%|▏         | 31/1261 [00:10<06:08,  3.34it/s]

  3%|▎         | 32/1261 [00:10<06:11,  3.31it/s]

  3%|▎         | 33/1261 [00:10<06:19,  3.23it/s]

  3%|▎         | 34/1261 [00:11<06:10,  3.31it/s]

  3%|▎         | 35/1261 [00:11<06:04,  3.36it/s]

  3%|▎         | 36/1261 [00:11<06:03,  3.37it/s]

  3%|▎         | 37/1261 [00:11<06:06,  3.34it/s]

  3%|▎         | 38/1261 [00:12<06:08,  3.32it/s]

  3%|▎         | 39/1261 [00:12<06:01,  3.38it/s]

  3%|▎         | 40/1261 [00:12<05:55,  3.44it/s]

  3%|▎         | 41/1261 [00:13<05:53,  3.45it/s]

  3%|▎         | 42/1261 [00:13<05:52,  3.46it/s]

  3%|▎         | 43/1261 [00:13<06:05,  3.33it/s]

  3%|▎         | 44/1261 [00:14<06:22,  3.18it/s]

  4%|▎         | 45/1261 [00:14<06:12,  3.27it/s]

  4%|▎         | 46/1261 [00:14<06:03,  3.34it/s]

  4%|▎         | 47/1261 [00:14<05:57,  3.40it/s]

  4%|▍         | 48/1261 [00:15<06:03,  3.34it/s]

  4%|▍         | 49/1261 [00:15<06:08,  3.29it/s]

  4%|▍         | 50/1261 [00:15<06:01,  3.35it/s]

  4%|▍         | 51/1261 [00:16<06:07,  3.30it/s]

  4%|▍         | 52/1261 [00:16<06:07,  3.29it/s]

  4%|▍         | 53/1261 [00:16<06:19,  3.18it/s]

  4%|▍         | 54/1261 [00:17<06:29,  3.10it/s]

  4%|▍         | 55/1261 [00:17<06:19,  3.18it/s]

  4%|▍         | 56/1261 [00:17<07:14,  2.77it/s]

  5%|▍         | 57/1261 [00:18<07:24,  2.71it/s]

  5%|▍         | 58/1261 [00:18<07:27,  2.69it/s]

  5%|▍         | 59/1261 [00:19<08:46,  2.28it/s]

  5%|▍         | 60/1261 [00:19<08:48,  2.27it/s]

  5%|▍         | 61/1261 [00:20<08:33,  2.34it/s]

  5%|▍         | 62/1261 [00:20<08:11,  2.44it/s]

  5%|▍         | 63/1261 [00:20<07:39,  2.61it/s]

  5%|▌         | 64/1261 [00:21<07:41,  2.60it/s]

  5%|▌         | 65/1261 [00:21<08:31,  2.34it/s]

  5%|▌         | 66/1261 [00:22<08:26,  2.36it/s]

  5%|▌         | 67/1261 [00:22<07:38,  2.61it/s]

  5%|▌         | 68/1261 [00:22<07:00,  2.84it/s]

  5%|▌         | 69/1261 [00:22<06:32,  3.04it/s]

  6%|▌         | 70/1261 [00:23<06:21,  3.12it/s]

  6%|▌         | 71/1261 [00:23<06:27,  3.07it/s]

  6%|▌         | 72/1261 [00:24<06:55,  2.86it/s]

  6%|▌         | 73/1261 [00:24<07:02,  2.81it/s]

  6%|▌         | 74/1261 [00:24<06:39,  2.97it/s]

  6%|▌         | 75/1261 [00:25<06:42,  2.95it/s]

  6%|▌         | 76/1261 [00:25<06:45,  2.92it/s]

  6%|▌         | 77/1261 [00:25<06:57,  2.84it/s]

  6%|▌         | 78/1261 [00:26<07:15,  2.72it/s]

  6%|▋         | 79/1261 [00:26<07:15,  2.71it/s]

  6%|▋         | 80/1261 [00:26<07:13,  2.73it/s]

  6%|▋         | 81/1261 [00:27<07:36,  2.59it/s]

  7%|▋         | 82/1261 [00:27<07:47,  2.52it/s]

  7%|▋         | 83/1261 [00:28<07:25,  2.64it/s]

  7%|▋         | 84/1261 [00:28<06:55,  2.84it/s]

  7%|▋         | 85/1261 [00:28<08:01,  2.44it/s]

  7%|▋         | 86/1261 [00:29<07:36,  2.57it/s]

  7%|▋         | 87/1261 [00:29<07:59,  2.45it/s]

  7%|▋         | 88/1261 [00:30<07:56,  2.46it/s]

  7%|▋         | 89/1261 [00:30<07:20,  2.66it/s]

  7%|▋         | 90/1261 [00:30<06:55,  2.82it/s]

  7%|▋         | 91/1261 [00:31<06:35,  2.96it/s]

  7%|▋         | 92/1261 [00:31<06:17,  3.10it/s]

  7%|▋         | 93/1261 [00:31<06:06,  3.18it/s]

  7%|▋         | 94/1261 [00:31<06:08,  3.17it/s]

  8%|▊         | 95/1261 [00:32<05:59,  3.25it/s]

  8%|▊         | 96/1261 [00:32<05:47,  3.35it/s]

  8%|▊         | 97/1261 [00:32<05:49,  3.33it/s]

  8%|▊         | 98/1261 [00:33<05:47,  3.35it/s]

  8%|▊         | 99/1261 [00:33<05:41,  3.41it/s]

  8%|▊         | 100/1261 [00:33<05:48,  3.33it/s]

  8%|▊         | 101/1261 [00:34<05:53,  3.28it/s]

  8%|▊         | 102/1261 [00:34<05:48,  3.32it/s]

  8%|▊         | 103/1261 [00:34<05:45,  3.35it/s]

  8%|▊         | 104/1261 [00:34<05:45,  3.35it/s]

  8%|▊         | 105/1261 [00:35<05:37,  3.43it/s]

  8%|▊         | 106/1261 [00:35<05:35,  3.44it/s]

  8%|▊         | 107/1261 [00:35<05:31,  3.49it/s]

  9%|▊         | 108/1261 [00:36<05:42,  3.37it/s]

  9%|▊         | 109/1261 [00:36<05:37,  3.42it/s]

  9%|▊         | 110/1261 [00:36<05:42,  3.36it/s]

  9%|▉         | 111/1261 [00:36<05:45,  3.33it/s]

  9%|▉         | 112/1261 [00:37<05:38,  3.40it/s]

  9%|▉         | 113/1261 [00:37<05:32,  3.45it/s]

  9%|▉         | 114/1261 [00:37<05:38,  3.39it/s]

  9%|▉         | 115/1261 [00:38<05:53,  3.25it/s]

  9%|▉         | 116/1261 [00:38<05:49,  3.28it/s]

  9%|▉         | 117/1261 [00:38<05:55,  3.22it/s]

  9%|▉         | 118/1261 [00:39<06:14,  3.05it/s]

  9%|▉         | 119/1261 [00:39<06:03,  3.15it/s]

 10%|▉         | 120/1261 [00:39<06:14,  3.05it/s]

 10%|▉         | 121/1261 [00:40<06:00,  3.16it/s]

 10%|▉         | 122/1261 [00:40<05:55,  3.20it/s]

 10%|▉         | 123/1261 [00:40<05:56,  3.19it/s]

 10%|▉         | 124/1261 [00:40<05:47,  3.28it/s]

 10%|▉         | 125/1261 [00:41<05:37,  3.37it/s]

 10%|▉         | 126/1261 [00:41<05:35,  3.38it/s]

 10%|█         | 127/1261 [00:41<05:41,  3.32it/s]

 10%|█         | 128/1261 [00:42<05:39,  3.33it/s]

 10%|█         | 129/1261 [00:42<05:41,  3.31it/s]

 10%|█         | 130/1261 [00:42<05:53,  3.20it/s]

 10%|█         | 131/1261 [00:43<06:06,  3.09it/s]

 10%|█         | 132/1261 [00:43<05:51,  3.21it/s]

 11%|█         | 133/1261 [00:43<05:49,  3.23it/s]

 11%|█         | 134/1261 [00:44<05:57,  3.16it/s]

 11%|█         | 135/1261 [00:44<05:48,  3.23it/s]

 11%|█         | 136/1261 [00:44<05:42,  3.28it/s]

 11%|█         | 137/1261 [00:44<05:37,  3.33it/s]

 11%|█         | 138/1261 [00:45<05:43,  3.27it/s]

 11%|█         | 139/1261 [00:45<05:41,  3.29it/s]

 11%|█         | 140/1261 [00:45<05:55,  3.15it/s]

 11%|█         | 141/1261 [00:46<05:58,  3.12it/s]

 11%|█▏        | 142/1261 [00:46<06:14,  2.98it/s]

 11%|█▏        | 143/1261 [00:46<06:09,  3.03it/s]

 11%|█▏        | 144/1261 [00:47<06:09,  3.03it/s]

 11%|█▏        | 145/1261 [00:47<05:54,  3.15it/s]

 12%|█▏        | 146/1261 [00:47<05:58,  3.11it/s]

 12%|█▏        | 147/1261 [00:48<05:53,  3.15it/s]

 12%|█▏        | 148/1261 [00:48<05:53,  3.15it/s]

 12%|█▏        | 149/1261 [00:48<05:44,  3.23it/s]

 12%|█▏        | 150/1261 [00:49<05:36,  3.30it/s]

 12%|█▏        | 151/1261 [00:49<05:30,  3.36it/s]

 12%|█▏        | 152/1261 [00:49<05:31,  3.34it/s]

 12%|█▏        | 153/1261 [00:49<05:38,  3.28it/s]

 12%|█▏        | 154/1261 [00:50<05:36,  3.29it/s]

 12%|█▏        | 155/1261 [00:50<05:37,  3.27it/s]

 12%|█▏        | 156/1261 [00:50<05:31,  3.33it/s]

 12%|█▏        | 157/1261 [00:51<05:33,  3.31it/s]

 13%|█▎        | 158/1261 [00:51<05:31,  3.33it/s]

 13%|█▎        | 159/1261 [00:51<05:30,  3.34it/s]

 13%|█▎        | 160/1261 [00:52<05:29,  3.34it/s]

 13%|█▎        | 161/1261 [00:52<05:25,  3.38it/s]

 13%|█▎        | 162/1261 [00:52<05:26,  3.36it/s]

 13%|█▎        | 163/1261 [00:52<05:22,  3.40it/s]

 13%|█▎        | 164/1261 [00:53<05:24,  3.38it/s]

 13%|█▎        | 165/1261 [00:53<05:18,  3.45it/s]

 13%|█▎        | 166/1261 [00:53<05:34,  3.28it/s]

 13%|█▎        | 167/1261 [00:54<05:36,  3.25it/s]

 13%|█▎        | 168/1261 [00:54<05:37,  3.24it/s]

 13%|█▎        | 169/1261 [00:54<05:26,  3.34it/s]

 13%|█▎        | 170/1261 [00:55<05:22,  3.39it/s]

 14%|█▎        | 171/1261 [00:55<05:27,  3.32it/s]

 14%|█▎        | 172/1261 [00:55<05:44,  3.16it/s]

 14%|█▎        | 173/1261 [00:56<06:00,  3.01it/s]

 14%|█▍        | 174/1261 [00:56<05:57,  3.04it/s]

 14%|█▍        | 175/1261 [00:56<05:51,  3.09it/s]

 14%|█▍        | 176/1261 [00:57<05:46,  3.13it/s]

 14%|█▍        | 177/1261 [00:57<05:39,  3.20it/s]

 14%|█▍        | 178/1261 [00:57<05:40,  3.18it/s]

 14%|█▍        | 179/1261 [00:57<05:43,  3.15it/s]

 14%|█▍        | 180/1261 [00:58<05:42,  3.16it/s]

 14%|█▍        | 181/1261 [00:58<05:34,  3.22it/s]

 14%|█▍        | 182/1261 [00:58<05:28,  3.28it/s]

 15%|█▍        | 183/1261 [00:59<05:19,  3.38it/s]

 15%|█▍        | 184/1261 [00:59<05:14,  3.43it/s]

 15%|█▍        | 185/1261 [00:59<05:24,  3.32it/s]

 15%|█▍        | 186/1261 [01:00<05:32,  3.23it/s]

 15%|█▍        | 187/1261 [01:00<05:53,  3.04it/s]

 15%|█▍        | 188/1261 [01:00<05:37,  3.18it/s]

 15%|█▍        | 189/1261 [01:01<05:23,  3.32it/s]

 15%|█▌        | 190/1261 [01:01<05:21,  3.33it/s]

 15%|█▌        | 191/1261 [01:01<05:17,  3.37it/s]

 15%|█▌        | 192/1261 [01:01<05:20,  3.34it/s]

 15%|█▌        | 193/1261 [01:02<05:18,  3.35it/s]

 15%|█▌        | 194/1261 [01:02<05:37,  3.16it/s]

 15%|█▌        | 195/1261 [01:02<05:31,  3.21it/s]

 16%|█▌        | 196/1261 [01:03<05:30,  3.22it/s]

 16%|█▌        | 197/1261 [01:03<05:28,  3.24it/s]

 16%|█▌        | 198/1261 [01:03<06:05,  2.91it/s]

 16%|█▌        | 199/1261 [01:04<06:13,  2.84it/s]

 16%|█▌        | 200/1261 [01:04<05:56,  2.98it/s]

 16%|█▌        | 201/1261 [01:04<05:44,  3.08it/s]

 16%|█▌        | 202/1261 [01:05<05:35,  3.16it/s]

 16%|█▌        | 203/1261 [01:05<05:29,  3.21it/s]

 16%|█▌        | 204/1261 [01:05<05:33,  3.17it/s]

 16%|█▋        | 205/1261 [01:06<05:27,  3.23it/s]

 16%|█▋        | 206/1261 [01:06<05:23,  3.26it/s]

 16%|█▋        | 207/1261 [01:06<05:13,  3.37it/s]

 16%|█▋        | 208/1261 [01:06<05:08,  3.41it/s]

 17%|█▋        | 209/1261 [01:07<05:05,  3.44it/s]

 17%|█▋        | 210/1261 [01:07<05:13,  3.35it/s]

 17%|█▋        | 211/1261 [01:07<05:11,  3.38it/s]

 17%|█▋        | 212/1261 [01:08<05:09,  3.39it/s]

 17%|█▋        | 213/1261 [01:08<05:05,  3.44it/s]

 17%|█▋        | 214/1261 [01:08<05:16,  3.31it/s]

 17%|█▋        | 215/1261 [01:09<05:13,  3.34it/s]

 17%|█▋        | 216/1261 [01:09<05:10,  3.37it/s]

 17%|█▋        | 217/1261 [01:09<05:06,  3.41it/s]

 17%|█▋        | 218/1261 [01:09<05:07,  3.39it/s]

 17%|█▋        | 219/1261 [01:10<05:06,  3.40it/s]

 17%|█▋        | 220/1261 [01:10<05:06,  3.40it/s]

 18%|█▊        | 221/1261 [01:10<05:05,  3.40it/s]

 18%|█▊        | 222/1261 [01:11<05:04,  3.41it/s]

 18%|█▊        | 223/1261 [01:11<04:59,  3.47it/s]

 18%|█▊        | 224/1261 [01:11<04:59,  3.46it/s]

 18%|█▊        | 225/1261 [01:11<04:53,  3.54it/s]

 18%|█▊        | 226/1261 [01:12<04:59,  3.46it/s]

 18%|█▊        | 227/1261 [01:12<04:55,  3.50it/s]

 18%|█▊        | 228/1261 [01:12<04:54,  3.50it/s]

 18%|█▊        | 229/1261 [01:13<04:45,  3.61it/s]

 18%|█▊        | 230/1261 [01:13<04:46,  3.60it/s]

 18%|█▊        | 231/1261 [01:13<04:46,  3.59it/s]

 18%|█▊        | 232/1261 [01:13<04:43,  3.63it/s]

 18%|█▊        | 233/1261 [01:14<04:42,  3.64it/s]

 19%|█▊        | 234/1261 [01:14<05:12,  3.29it/s]

 19%|█▊        | 235/1261 [01:15<06:25,  2.66it/s]

 19%|█▊        | 236/1261 [01:15<06:50,  2.50it/s]

 19%|█▉        | 237/1261 [01:15<06:50,  2.49it/s]

 19%|█▉        | 238/1261 [01:16<06:23,  2.67it/s]

 19%|█▉        | 239/1261 [01:16<06:10,  2.76it/s]

 19%|█▉        | 240/1261 [01:16<05:54,  2.88it/s]

 19%|█▉        | 241/1261 [01:17<05:46,  2.95it/s]

 19%|█▉        | 242/1261 [01:17<06:16,  2.71it/s]

 19%|█▉        | 243/1261 [01:18<06:14,  2.72it/s]

 19%|█▉        | 244/1261 [01:18<06:19,  2.68it/s]

 19%|█▉        | 245/1261 [01:18<07:04,  2.39it/s]

 20%|█▉        | 246/1261 [01:19<07:41,  2.20it/s]

 20%|█▉        | 247/1261 [01:19<07:13,  2.34it/s]

 20%|█▉        | 248/1261 [01:20<06:45,  2.50it/s]

 20%|█▉        | 249/1261 [01:20<07:30,  2.25it/s]

 20%|█▉        | 250/1261 [01:21<07:09,  2.35it/s]

 20%|█▉        | 251/1261 [01:21<07:17,  2.31it/s]

 20%|█▉        | 252/1261 [01:21<07:19,  2.29it/s]

 20%|██        | 253/1261 [01:22<07:36,  2.21it/s]

 20%|██        | 254/1261 [01:22<07:14,  2.32it/s]

 20%|██        | 255/1261 [01:23<06:43,  2.49it/s]

 20%|██        | 256/1261 [01:23<06:31,  2.56it/s]

 20%|██        | 257/1261 [01:23<06:27,  2.59it/s]

 20%|██        | 258/1261 [01:24<06:31,  2.56it/s]

 21%|██        | 259/1261 [01:24<07:04,  2.36it/s]

 21%|██        | 260/1261 [01:25<06:42,  2.48it/s]

 21%|██        | 261/1261 [01:25<06:33,  2.54it/s]

 21%|██        | 262/1261 [01:25<06:38,  2.51it/s]

 21%|██        | 263/1261 [01:26<06:31,  2.55it/s]

 21%|██        | 264/1261 [01:26<06:49,  2.43it/s]

 21%|██        | 265/1261 [01:27<07:19,  2.27it/s]

 21%|██        | 266/1261 [01:27<08:01,  2.07it/s]

 21%|██        | 267/1261 [01:28<08:40,  1.91it/s]

 21%|██▏       | 268/1261 [01:28<07:56,  2.08it/s]

 21%|██▏       | 269/1261 [01:29<07:28,  2.21it/s]

 21%|██▏       | 270/1261 [01:29<07:35,  2.17it/s]

 21%|██▏       | 271/1261 [01:30<07:38,  2.16it/s]

 22%|██▏       | 272/1261 [01:30<07:20,  2.25it/s]

 22%|██▏       | 273/1261 [01:31<07:21,  2.24it/s]

 22%|██▏       | 274/1261 [01:31<07:00,  2.35it/s]

 22%|██▏       | 275/1261 [01:31<06:42,  2.45it/s]

 22%|██▏       | 276/1261 [01:32<06:22,  2.58it/s]

 22%|██▏       | 277/1261 [01:32<06:09,  2.66it/s]

 22%|██▏       | 278/1261 [01:32<06:05,  2.69it/s]

 22%|██▏       | 279/1261 [01:33<06:04,  2.70it/s]

 22%|██▏       | 280/1261 [01:33<05:56,  2.75it/s]

 22%|██▏       | 281/1261 [01:33<06:07,  2.67it/s]

 22%|██▏       | 282/1261 [01:34<06:03,  2.69it/s]

 22%|██▏       | 283/1261 [01:35<07:34,  2.15it/s]

 23%|██▎       | 284/1261 [01:35<08:28,  1.92it/s]

 23%|██▎       | 285/1261 [01:36<08:08,  2.00it/s]

 23%|██▎       | 286/1261 [01:36<09:43,  1.67it/s]

 23%|██▎       | 287/1261 [01:37<09:05,  1.78it/s]

 23%|██▎       | 288/1261 [01:37<08:52,  1.83it/s]

 23%|██▎       | 289/1261 [01:38<07:57,  2.04it/s]

 23%|██▎       | 290/1261 [01:38<07:56,  2.04it/s]

 23%|██▎       | 291/1261 [01:39<07:50,  2.06it/s]

 23%|██▎       | 292/1261 [01:39<07:31,  2.15it/s]

 23%|██▎       | 293/1261 [01:40<06:54,  2.33it/s]

 23%|██▎       | 294/1261 [01:40<06:40,  2.42it/s]

 23%|██▎       | 295/1261 [01:40<06:28,  2.49it/s]

 23%|██▎       | 296/1261 [01:41<06:29,  2.48it/s]

 24%|██▎       | 297/1261 [01:41<06:21,  2.52it/s]

 24%|██▎       | 298/1261 [01:41<06:21,  2.53it/s]

 24%|██▎       | 299/1261 [01:42<06:14,  2.57it/s]

 24%|██▍       | 300/1261 [01:42<05:58,  2.68it/s]

 24%|██▍       | 301/1261 [01:43<05:54,  2.71it/s]

 24%|██▍       | 302/1261 [01:43<06:01,  2.65it/s]

 24%|██▍       | 303/1261 [01:43<05:54,  2.70it/s]

 24%|██▍       | 304/1261 [01:44<05:36,  2.85it/s]

 24%|██▍       | 305/1261 [01:44<05:36,  2.84it/s]

 24%|██▍       | 306/1261 [01:44<05:53,  2.70it/s]

 24%|██▍       | 307/1261 [01:45<05:43,  2.77it/s]

 24%|██▍       | 308/1261 [01:45<05:31,  2.87it/s]

 25%|██▍       | 309/1261 [01:45<05:39,  2.81it/s]

 25%|██▍       | 310/1261 [01:46<05:30,  2.88it/s]

 25%|██▍       | 311/1261 [01:46<05:32,  2.85it/s]

 25%|██▍       | 312/1261 [01:46<05:22,  2.94it/s]

 25%|██▍       | 313/1261 [01:47<05:15,  3.00it/s]

 25%|██▍       | 314/1261 [01:47<05:09,  3.06it/s]

 25%|██▍       | 315/1261 [01:47<05:10,  3.04it/s]

 25%|██▌       | 316/1261 [01:48<05:03,  3.11it/s]

 25%|██▌       | 317/1261 [01:48<04:56,  3.18it/s]

 25%|██▌       | 318/1261 [01:48<04:54,  3.20it/s]

 25%|██▌       | 319/1261 [01:49<04:48,  3.27it/s]

 25%|██▌       | 320/1261 [01:49<04:54,  3.20it/s]

 25%|██▌       | 321/1261 [01:49<05:01,  3.12it/s]

 26%|██▌       | 322/1261 [01:50<05:04,  3.08it/s]

 26%|██▌       | 323/1261 [01:50<04:59,  3.13it/s]

 26%|██▌       | 324/1261 [01:50<04:59,  3.13it/s]

 26%|██▌       | 325/1261 [01:51<05:05,  3.06it/s]

 26%|██▌       | 326/1261 [01:51<05:04,  3.07it/s]

 26%|██▌       | 327/1261 [01:51<04:56,  3.15it/s]

 26%|██▌       | 328/1261 [01:51<05:01,  3.10it/s]

 26%|██▌       | 329/1261 [01:52<05:04,  3.06it/s]

 26%|██▌       | 330/1261 [01:52<05:05,  3.05it/s]

 26%|██▌       | 331/1261 [01:53<05:14,  2.95it/s]

 26%|██▋       | 332/1261 [01:53<05:05,  3.04it/s]

 26%|██▋       | 333/1261 [01:53<05:03,  3.06it/s]

 26%|██▋       | 334/1261 [01:54<05:08,  3.00it/s]

 27%|██▋       | 335/1261 [01:54<05:04,  3.04it/s]

 27%|██▋       | 336/1261 [01:54<04:53,  3.15it/s]

 27%|██▋       | 337/1261 [01:54<04:46,  3.22it/s]

 27%|██▋       | 338/1261 [01:55<04:51,  3.16it/s]

 27%|██▋       | 339/1261 [01:55<04:51,  3.16it/s]

 27%|██▋       | 340/1261 [01:55<05:13,  2.94it/s]

 27%|██▋       | 341/1261 [01:56<05:03,  3.03it/s]

 27%|██▋       | 342/1261 [01:56<05:02,  3.04it/s]

 27%|██▋       | 343/1261 [01:56<05:17,  2.89it/s]

 27%|██▋       | 344/1261 [01:57<05:45,  2.66it/s]

 27%|██▋       | 345/1261 [01:57<06:21,  2.40it/s]

 27%|██▋       | 346/1261 [01:58<06:31,  2.33it/s]

 28%|██▊       | 347/1261 [01:58<07:00,  2.17it/s]

 28%|██▊       | 348/1261 [01:59<06:30,  2.34it/s]

 28%|██▊       | 349/1261 [01:59<06:20,  2.40it/s]

 28%|██▊       | 350/1261 [01:59<05:50,  2.60it/s]

 28%|██▊       | 351/1261 [02:00<05:22,  2.82it/s]

 28%|██▊       | 352/1261 [02:00<05:04,  2.98it/s]

 28%|██▊       | 353/1261 [02:00<05:36,  2.70it/s]

 28%|██▊       | 354/1261 [02:01<05:59,  2.52it/s]

 28%|██▊       | 355/1261 [02:01<05:37,  2.69it/s]

 28%|██▊       | 356/1261 [02:02<05:23,  2.80it/s]

 28%|██▊       | 357/1261 [02:02<05:16,  2.85it/s]

 28%|██▊       | 358/1261 [02:02<04:57,  3.04it/s]

 28%|██▊       | 359/1261 [02:02<04:40,  3.22it/s]

 29%|██▊       | 360/1261 [02:03<04:28,  3.36it/s]

 29%|██▊       | 361/1261 [02:03<04:22,  3.43it/s]

 29%|██▊       | 362/1261 [02:03<04:18,  3.48it/s]

 29%|██▉       | 363/1261 [02:04<04:17,  3.49it/s]

 29%|██▉       | 364/1261 [02:04<04:17,  3.48it/s]

 29%|██▉       | 365/1261 [02:04<04:47,  3.11it/s]

 29%|██▉       | 366/1261 [02:05<04:36,  3.24it/s]

 29%|██▉       | 367/1261 [02:05<04:27,  3.34it/s]

 29%|██▉       | 368/1261 [02:05<04:23,  3.39it/s]

 29%|██▉       | 369/1261 [02:05<04:16,  3.48it/s]

 29%|██▉       | 370/1261 [02:06<04:12,  3.52it/s]

 29%|██▉       | 371/1261 [02:06<04:06,  3.61it/s]

 30%|██▉       | 372/1261 [02:06<04:05,  3.62it/s]

 30%|██▉       | 373/1261 [02:06<04:06,  3.60it/s]

 30%|██▉       | 374/1261 [02:07<04:06,  3.59it/s]

 30%|██▉       | 375/1261 [02:07<04:02,  3.65it/s]

 30%|██▉       | 376/1261 [02:07<04:01,  3.67it/s]

 30%|██▉       | 377/1261 [02:08<04:00,  3.68it/s]

 30%|██▉       | 378/1261 [02:08<04:37,  3.18it/s]

 30%|███       | 379/1261 [02:08<04:43,  3.12it/s]

 30%|███       | 380/1261 [02:09<04:50,  3.04it/s]

 30%|███       | 381/1261 [02:09<04:36,  3.18it/s]

 30%|███       | 382/1261 [02:09<04:32,  3.23it/s]

 30%|███       | 383/1261 [02:10<04:23,  3.33it/s]

 30%|███       | 384/1261 [02:10<04:15,  3.44it/s]

 31%|███       | 385/1261 [02:10<04:37,  3.16it/s]

 31%|███       | 386/1261 [02:11<04:54,  2.97it/s]

 31%|███       | 387/1261 [02:11<04:59,  2.91it/s]

 31%|███       | 388/1261 [02:11<04:43,  3.08it/s]

 31%|███       | 389/1261 [02:11<04:30,  3.22it/s]

 31%|███       | 390/1261 [02:12<04:22,  3.32it/s]

 31%|███       | 391/1261 [02:12<05:03,  2.87it/s]

 31%|███       | 392/1261 [02:12<04:41,  3.09it/s]

 31%|███       | 393/1261 [02:13<04:30,  3.21it/s]

 31%|███       | 394/1261 [02:13<04:23,  3.29it/s]

 31%|███▏      | 395/1261 [02:13<04:18,  3.35it/s]

 31%|███▏      | 396/1261 [02:14<04:12,  3.43it/s]

 31%|███▏      | 397/1261 [02:14<04:02,  3.56it/s]

 32%|███▏      | 398/1261 [02:14<04:01,  3.57it/s]

 32%|███▏      | 399/1261 [02:14<04:01,  3.58it/s]

 32%|███▏      | 400/1261 [02:15<04:00,  3.58it/s]

 32%|███▏      | 401/1261 [02:15<03:58,  3.61it/s]

 32%|███▏      | 402/1261 [02:15<04:11,  3.42it/s]

 32%|███▏      | 403/1261 [02:16<04:44,  3.01it/s]

 32%|███▏      | 404/1261 [02:16<04:29,  3.18it/s]

 32%|███▏      | 405/1261 [02:16<04:21,  3.28it/s]

 32%|███▏      | 406/1261 [02:17<04:16,  3.33it/s]

 32%|███▏      | 407/1261 [02:17<04:12,  3.39it/s]

 32%|███▏      | 408/1261 [02:17<04:06,  3.45it/s]

 32%|███▏      | 409/1261 [02:17<04:01,  3.52it/s]

 33%|███▎      | 410/1261 [02:18<03:58,  3.57it/s]

 33%|███▎      | 411/1261 [02:18<03:59,  3.55it/s]

 33%|███▎      | 412/1261 [02:18<04:00,  3.53it/s]

 33%|███▎      | 413/1261 [02:18<03:55,  3.60it/s]

 33%|███▎      | 414/1261 [02:19<03:56,  3.59it/s]

 33%|███▎      | 415/1261 [02:19<03:57,  3.56it/s]

 33%|███▎      | 416/1261 [02:19<03:54,  3.60it/s]

 33%|███▎      | 417/1261 [02:20<04:11,  3.35it/s]

 33%|███▎      | 418/1261 [02:20<04:37,  3.04it/s]

 33%|███▎      | 419/1261 [02:21<05:02,  2.79it/s]

 33%|███▎      | 420/1261 [02:21<04:51,  2.89it/s]

 33%|███▎      | 421/1261 [02:21<04:33,  3.07it/s]

 33%|███▎      | 422/1261 [02:21<04:34,  3.06it/s]

 34%|███▎      | 423/1261 [02:22<04:23,  3.18it/s]

 34%|███▎      | 424/1261 [02:22<04:12,  3.32it/s]

 34%|███▎      | 425/1261 [02:22<04:06,  3.39it/s]

 34%|███▍      | 426/1261 [02:23<04:02,  3.44it/s]

 34%|███▍      | 427/1261 [02:23<03:57,  3.51it/s]

 34%|███▍      | 428/1261 [02:23<03:54,  3.55it/s]

 34%|███▍      | 429/1261 [02:23<03:53,  3.57it/s]

 34%|███▍      | 430/1261 [02:24<03:50,  3.61it/s]

 34%|███▍      | 431/1261 [02:24<03:49,  3.62it/s]

 34%|███▍      | 432/1261 [02:24<03:48,  3.63it/s]

 34%|███▍      | 433/1261 [02:24<03:51,  3.58it/s]

 34%|███▍      | 434/1261 [02:25<03:53,  3.54it/s]

 34%|███▍      | 435/1261 [02:25<03:53,  3.54it/s]

 35%|███▍      | 436/1261 [02:25<04:00,  3.42it/s]

 35%|███▍      | 437/1261 [02:26<03:53,  3.52it/s]

 35%|███▍      | 438/1261 [02:26<03:57,  3.46it/s]

 35%|███▍      | 439/1261 [02:26<04:03,  3.38it/s]

 35%|███▍      | 440/1261 [02:26<03:54,  3.50it/s]

 35%|███▍      | 441/1261 [02:27<03:53,  3.51it/s]

 35%|███▌      | 442/1261 [02:27<04:04,  3.36it/s]

 35%|███▌      | 443/1261 [02:27<03:55,  3.48it/s]

 35%|███▌      | 444/1261 [02:28<03:50,  3.54it/s]

 35%|███▌      | 445/1261 [02:28<03:46,  3.60it/s]

 35%|███▌      | 446/1261 [02:28<04:31,  3.00it/s]

 35%|███▌      | 447/1261 [02:29<04:18,  3.15it/s]

 36%|███▌      | 448/1261 [02:29<04:11,  3.23it/s]

 36%|███▌      | 449/1261 [02:29<04:04,  3.32it/s]

 36%|███▌      | 450/1261 [02:30<04:03,  3.33it/s]

 36%|███▌      | 451/1261 [02:30<04:02,  3.34it/s]

 36%|███▌      | 452/1261 [02:30<03:56,  3.42it/s]

 36%|███▌      | 453/1261 [02:30<03:52,  3.47it/s]

 36%|███▌      | 454/1261 [02:31<03:50,  3.50it/s]

 36%|███▌      | 455/1261 [02:31<03:57,  3.40it/s]

 36%|███▌      | 456/1261 [02:31<04:23,  3.06it/s]

 36%|███▌      | 457/1261 [02:32<04:10,  3.21it/s]

 36%|███▋      | 458/1261 [02:32<04:09,  3.22it/s]

 36%|███▋      | 459/1261 [02:32<03:59,  3.35it/s]

 36%|███▋      | 460/1261 [02:33<03:52,  3.44it/s]

 37%|███▋      | 461/1261 [02:33<03:46,  3.54it/s]

 37%|███▋      | 462/1261 [02:33<03:46,  3.53it/s]

 37%|███▋      | 463/1261 [02:33<03:49,  3.48it/s]

 37%|███▋      | 464/1261 [02:34<03:44,  3.55it/s]

 37%|███▋      | 465/1261 [02:34<03:42,  3.57it/s]

 37%|███▋      | 466/1261 [02:34<03:45,  3.53it/s]

 37%|███▋      | 467/1261 [02:34<03:40,  3.61it/s]

 37%|███▋      | 468/1261 [02:35<03:38,  3.63it/s]

 37%|███▋      | 469/1261 [02:35<03:33,  3.70it/s]

 37%|███▋      | 470/1261 [02:35<03:35,  3.67it/s]

 37%|███▋      | 471/1261 [02:36<03:35,  3.66it/s]

 37%|███▋      | 472/1261 [02:36<03:36,  3.65it/s]

 38%|███▊      | 473/1261 [02:36<03:32,  3.71it/s]

 38%|███▊      | 474/1261 [02:36<03:33,  3.68it/s]

 38%|███▊      | 475/1261 [02:37<03:34,  3.66it/s]

 38%|███▊      | 476/1261 [02:37<04:12,  3.11it/s]

 38%|███▊      | 477/1261 [02:37<04:01,  3.25it/s]

 38%|███▊      | 478/1261 [02:38<03:58,  3.28it/s]

 38%|███▊      | 479/1261 [02:38<03:49,  3.41it/s]

 38%|███▊      | 480/1261 [02:38<03:46,  3.45it/s]

 38%|███▊      | 481/1261 [02:38<03:44,  3.47it/s]

 38%|███▊      | 482/1261 [02:39<03:43,  3.48it/s]

 38%|███▊      | 483/1261 [02:39<03:37,  3.57it/s]

 38%|███▊      | 484/1261 [02:39<03:35,  3.61it/s]

 38%|███▊      | 485/1261 [02:40<03:35,  3.60it/s]

 39%|███▊      | 486/1261 [02:40<03:36,  3.58it/s]

 39%|███▊      | 487/1261 [02:40<03:31,  3.65it/s]

 39%|███▊      | 488/1261 [02:40<03:29,  3.69it/s]

 39%|███▉      | 489/1261 [02:41<03:26,  3.74it/s]

 39%|███▉      | 490/1261 [02:41<03:26,  3.73it/s]

 39%|███▉      | 491/1261 [02:41<03:31,  3.65it/s]

 39%|███▉      | 492/1261 [02:41<03:27,  3.71it/s]

 39%|███▉      | 493/1261 [02:42<03:28,  3.69it/s]

 39%|███▉      | 494/1261 [02:42<03:32,  3.60it/s]

 39%|███▉      | 495/1261 [02:42<04:02,  3.16it/s]

 39%|███▉      | 496/1261 [02:43<03:52,  3.28it/s]

 39%|███▉      | 497/1261 [02:43<03:50,  3.31it/s]

 39%|███▉      | 498/1261 [02:43<03:44,  3.39it/s]

 40%|███▉      | 499/1261 [02:44<03:39,  3.47it/s]

 40%|███▉      | 500/1261 [02:44<03:35,  3.53it/s]

 40%|███▉      | 501/1261 [02:44<04:15,  2.97it/s]

 40%|███▉      | 502/1261 [02:45<04:06,  3.08it/s]

 40%|███▉      | 503/1261 [02:45<03:53,  3.24it/s]

 40%|███▉      | 504/1261 [02:45<03:49,  3.30it/s]

 40%|████      | 505/1261 [02:45<03:47,  3.32it/s]

 40%|████      | 506/1261 [02:46<03:46,  3.34it/s]

 40%|████      | 507/1261 [02:46<03:39,  3.44it/s]

 40%|████      | 508/1261 [02:46<03:35,  3.50it/s]

 40%|████      | 509/1261 [02:47<03:31,  3.55it/s]

 40%|████      | 510/1261 [02:47<03:32,  3.54it/s]

 41%|████      | 511/1261 [02:47<03:28,  3.60it/s]

 41%|████      | 512/1261 [02:47<03:26,  3.63it/s]

 41%|████      | 513/1261 [02:48<03:34,  3.48it/s]

 41%|████      | 514/1261 [02:48<04:04,  3.05it/s]

 41%|████      | 515/1261 [02:48<03:59,  3.12it/s]

 41%|████      | 516/1261 [02:49<03:49,  3.25it/s]

 41%|████      | 517/1261 [02:49<03:42,  3.35it/s]

 41%|████      | 518/1261 [02:49<03:41,  3.36it/s]

 41%|████      | 519/1261 [02:50<03:36,  3.43it/s]

 41%|████      | 520/1261 [02:50<03:29,  3.54it/s]

 41%|████▏     | 521/1261 [02:50<03:29,  3.53it/s]

 41%|████▏     | 522/1261 [02:50<03:28,  3.55it/s]

 41%|████▏     | 523/1261 [02:51<03:26,  3.57it/s]

 42%|████▏     | 524/1261 [02:51<03:30,  3.50it/s]

 42%|████▏     | 525/1261 [02:51<03:31,  3.49it/s]

 42%|████▏     | 526/1261 [02:52<04:13,  2.89it/s]

 42%|████▏     | 527/1261 [02:52<04:01,  3.04it/s]

 42%|████▏     | 528/1261 [02:52<03:51,  3.16it/s]

 42%|████▏     | 529/1261 [02:53<03:43,  3.27it/s]

 42%|████▏     | 530/1261 [02:53<03:39,  3.33it/s]

 42%|████▏     | 531/1261 [02:53<03:37,  3.35it/s]

 42%|████▏     | 532/1261 [02:53<03:31,  3.44it/s]

 42%|████▏     | 533/1261 [02:54<03:29,  3.48it/s]

 42%|████▏     | 534/1261 [02:54<03:29,  3.47it/s]

 42%|████▏     | 535/1261 [02:54<03:26,  3.52it/s]

 43%|████▎     | 536/1261 [02:55<03:21,  3.59it/s]

 43%|████▎     | 537/1261 [02:55<03:19,  3.62it/s]

 43%|████▎     | 538/1261 [02:55<03:31,  3.42it/s]

 43%|████▎     | 539/1261 [02:56<04:00,  3.00it/s]

 43%|████▎     | 540/1261 [02:56<03:49,  3.14it/s]

 43%|████▎     | 541/1261 [02:56<03:46,  3.18it/s]

 43%|████▎     | 542/1261 [02:56<03:44,  3.21it/s]

 43%|████▎     | 543/1261 [02:57<04:00,  2.98it/s]

 43%|████▎     | 544/1261 [02:57<03:46,  3.17it/s]

 43%|████▎     | 545/1261 [02:57<03:36,  3.30it/s]

 43%|████▎     | 546/1261 [02:58<03:33,  3.35it/s]

 43%|████▎     | 547/1261 [02:58<03:28,  3.43it/s]

 43%|████▎     | 548/1261 [02:58<03:34,  3.33it/s]

 44%|████▎     | 549/1261 [02:59<03:26,  3.44it/s]

 44%|████▎     | 550/1261 [02:59<04:07,  2.87it/s]

 44%|████▎     | 551/1261 [02:59<04:04,  2.90it/s]

 44%|████▍     | 552/1261 [03:00<04:16,  2.77it/s]

 44%|████▍     | 553/1261 [03:00<03:58,  2.97it/s]

 44%|████▍     | 554/1261 [03:00<03:46,  3.12it/s]

 44%|████▍     | 555/1261 [03:01<03:36,  3.26it/s]

 44%|████▍     | 556/1261 [03:01<04:02,  2.91it/s]

 44%|████▍     | 557/1261 [03:01<04:19,  2.71it/s]

 44%|████▍     | 558/1261 [03:02<04:04,  2.88it/s]

 44%|████▍     | 559/1261 [03:02<03:53,  3.01it/s]

 44%|████▍     | 560/1261 [03:02<03:43,  3.14it/s]

 44%|████▍     | 561/1261 [03:03<03:33,  3.27it/s]

 45%|████▍     | 562/1261 [03:03<03:25,  3.40it/s]

 45%|████▍     | 563/1261 [03:03<03:20,  3.48it/s]

 45%|████▍     | 564/1261 [03:03<03:20,  3.48it/s]

 45%|████▍     | 565/1261 [03:04<03:16,  3.54it/s]

 45%|████▍     | 566/1261 [03:04<03:17,  3.51it/s]

 45%|████▍     | 567/1261 [03:04<03:16,  3.54it/s]

 45%|████▌     | 568/1261 [03:05<03:15,  3.54it/s]

 45%|████▌     | 569/1261 [03:05<03:12,  3.60it/s]

 45%|████▌     | 570/1261 [03:05<03:09,  3.64it/s]

 45%|████▌     | 571/1261 [03:05<03:22,  3.41it/s]

 45%|████▌     | 572/1261 [03:06<03:45,  3.06it/s]

 45%|████▌     | 573/1261 [03:06<03:34,  3.21it/s]

 46%|████▌     | 574/1261 [03:06<03:27,  3.31it/s]

 46%|████▌     | 575/1261 [03:07<03:21,  3.40it/s]

 46%|████▌     | 576/1261 [03:07<03:21,  3.41it/s]

 46%|████▌     | 577/1261 [03:07<03:18,  3.44it/s]

 46%|████▌     | 578/1261 [03:08<03:16,  3.48it/s]

 46%|████▌     | 579/1261 [03:08<03:10,  3.58it/s]

 46%|████▌     | 580/1261 [03:08<03:13,  3.52it/s]

 46%|████▌     | 581/1261 [03:08<03:13,  3.52it/s]

 46%|████▌     | 582/1261 [03:09<03:08,  3.59it/s]

 46%|████▌     | 583/1261 [03:09<03:05,  3.65it/s]

 46%|████▋     | 584/1261 [03:09<03:10,  3.56it/s]

 46%|████▋     | 585/1261 [03:09<03:09,  3.56it/s]

 46%|████▋     | 586/1261 [03:10<03:06,  3.62it/s]

 47%|████▋     | 587/1261 [03:10<03:07,  3.59it/s]

 47%|████▋     | 588/1261 [03:10<03:08,  3.57it/s]

 47%|████▋     | 589/1261 [03:11<03:06,  3.60it/s]

 47%|████▋     | 590/1261 [03:11<03:05,  3.62it/s]

 47%|████▋     | 591/1261 [03:11<03:02,  3.66it/s]

 47%|████▋     | 592/1261 [03:12<03:32,  3.14it/s]

 47%|████▋     | 593/1261 [03:12<03:48,  2.93it/s]

 47%|████▋     | 594/1261 [03:12<03:39,  3.03it/s]

 47%|████▋     | 595/1261 [03:13<03:33,  3.11it/s]

 47%|████▋     | 596/1261 [03:13<03:29,  3.18it/s]

 47%|████▋     | 597/1261 [03:13<03:23,  3.27it/s]

 47%|████▋     | 598/1261 [03:13<03:24,  3.24it/s]

 48%|████▊     | 599/1261 [03:14<03:15,  3.38it/s]

 48%|████▊     | 600/1261 [03:14<03:10,  3.48it/s]

 48%|████▊     | 601/1261 [03:14<03:08,  3.49it/s]

 48%|████▊     | 602/1261 [03:15<03:06,  3.53it/s]

 48%|████▊     | 603/1261 [03:15<03:57,  2.77it/s]

 48%|████▊     | 604/1261 [03:15<03:58,  2.76it/s]

 48%|████▊     | 605/1261 [03:16<04:02,  2.70it/s]

 48%|████▊     | 606/1261 [03:16<03:58,  2.74it/s]

 48%|████▊     | 607/1261 [03:16<03:43,  2.93it/s]

 48%|████▊     | 608/1261 [03:17<03:37,  3.01it/s]

 48%|████▊     | 609/1261 [03:17<03:28,  3.13it/s]

 48%|████▊     | 610/1261 [03:17<03:23,  3.20it/s]

 48%|████▊     | 611/1261 [03:18<03:31,  3.08it/s]

 49%|████▊     | 612/1261 [03:18<03:28,  3.11it/s]

 49%|████▊     | 613/1261 [03:18<03:52,  2.78it/s]

 49%|████▊     | 614/1261 [03:19<03:52,  2.78it/s]

 49%|████▉     | 615/1261 [03:19<03:38,  2.96it/s]

 49%|████▉     | 616/1261 [03:19<03:25,  3.14it/s]

 49%|████▉     | 617/1261 [03:20<03:18,  3.24it/s]

 49%|████▉     | 618/1261 [03:20<03:16,  3.28it/s]

 49%|████▉     | 619/1261 [03:20<03:09,  3.39it/s]

 49%|████▉     | 620/1261 [03:21<03:03,  3.49it/s]

 49%|████▉     | 621/1261 [03:21<03:03,  3.49it/s]

 49%|████▉     | 622/1261 [03:21<03:00,  3.55it/s]

 49%|████▉     | 623/1261 [03:21<03:00,  3.53it/s]

 49%|████▉     | 624/1261 [03:22<02:56,  3.61it/s]

 50%|████▉     | 625/1261 [03:22<02:59,  3.54it/s]

 50%|████▉     | 626/1261 [03:22<02:56,  3.60it/s]

 50%|████▉     | 627/1261 [03:22<02:53,  3.66it/s]

 50%|████▉     | 628/1261 [03:23<02:51,  3.69it/s]

 50%|████▉     | 629/1261 [03:23<02:52,  3.66it/s]

 50%|████▉     | 630/1261 [03:23<02:52,  3.67it/s]

 50%|█████     | 631/1261 [03:24<02:50,  3.69it/s]

 50%|█████     | 632/1261 [03:24<02:51,  3.67it/s]

 50%|█████     | 633/1261 [03:24<02:54,  3.60it/s]

 50%|█████     | 634/1261 [03:24<02:51,  3.65it/s]

 50%|█████     | 635/1261 [03:25<03:18,  3.15it/s]

 50%|█████     | 636/1261 [03:25<03:20,  3.12it/s]

 51%|█████     | 637/1261 [03:25<03:12,  3.25it/s]

 51%|█████     | 638/1261 [03:26<03:14,  3.21it/s]

 51%|█████     | 639/1261 [03:26<03:09,  3.29it/s]

 51%|█████     | 640/1261 [03:26<03:11,  3.24it/s]

 51%|█████     | 641/1261 [03:27<03:36,  2.87it/s]

 51%|█████     | 642/1261 [03:27<03:24,  3.03it/s]

 51%|█████     | 643/1261 [03:27<03:15,  3.16it/s]

 51%|█████     | 644/1261 [03:28<03:13,  3.20it/s]

 51%|█████     | 645/1261 [03:28<03:10,  3.24it/s]

 51%|█████     | 646/1261 [03:28<03:07,  3.28it/s]

 51%|█████▏    | 647/1261 [03:29<03:03,  3.35it/s]

 51%|█████▏    | 648/1261 [03:29<02:58,  3.43it/s]

 51%|█████▏    | 649/1261 [03:29<02:59,  3.42it/s]

 52%|█████▏    | 650/1261 [03:29<03:01,  3.38it/s]

 52%|█████▏    | 651/1261 [03:30<03:19,  3.06it/s]

 52%|█████▏    | 652/1261 [03:30<03:14,  3.12it/s]

 52%|█████▏    | 653/1261 [03:30<03:05,  3.27it/s]

 52%|█████▏    | 654/1261 [03:31<03:01,  3.34it/s]

 52%|█████▏    | 655/1261 [03:31<02:58,  3.39it/s]

 52%|█████▏    | 656/1261 [03:31<02:56,  3.43it/s]

 52%|█████▏    | 657/1261 [03:31<02:50,  3.54it/s]

 52%|█████▏    | 658/1261 [03:32<02:49,  3.55it/s]

 52%|█████▏    | 659/1261 [03:32<02:47,  3.60it/s]

 52%|█████▏    | 660/1261 [03:32<02:45,  3.63it/s]

 52%|█████▏    | 661/1261 [03:33<02:44,  3.64it/s]

 52%|█████▏    | 662/1261 [03:33<02:44,  3.63it/s]

 53%|█████▎    | 663/1261 [03:33<02:44,  3.63it/s]

 53%|█████▎    | 664/1261 [03:33<02:44,  3.64it/s]

 53%|█████▎    | 665/1261 [03:34<02:43,  3.64it/s]

 53%|█████▎    | 666/1261 [03:34<02:42,  3.65it/s]

 53%|█████▎    | 667/1261 [03:34<02:52,  3.43it/s]

 53%|█████▎    | 668/1261 [03:35<03:17,  3.00it/s]

 53%|█████▎    | 669/1261 [03:35<03:39,  2.70it/s]

 53%|█████▎    | 670/1261 [03:36<04:24,  2.23it/s]

 53%|█████▎    | 671/1261 [03:37<06:01,  1.63it/s]

 53%|█████▎    | 672/1261 [03:37<06:19,  1.55it/s]

 53%|█████▎    | 673/1261 [03:38<05:50,  1.68it/s]

 53%|█████▎    | 674/1261 [03:38<05:07,  1.91it/s]

 54%|█████▎    | 675/1261 [03:39<04:27,  2.19it/s]

 54%|█████▎    | 676/1261 [03:39<04:05,  2.38it/s]

 54%|█████▎    | 677/1261 [03:39<04:02,  2.41it/s]

 54%|█████▍    | 678/1261 [03:40<03:42,  2.62it/s]

 54%|█████▍    | 679/1261 [03:40<03:45,  2.58it/s]

 54%|█████▍    | 680/1261 [03:40<03:36,  2.68it/s]

 54%|█████▍    | 681/1261 [03:41<03:27,  2.80it/s]

 54%|█████▍    | 682/1261 [03:41<03:21,  2.88it/s]

 54%|█████▍    | 683/1261 [03:41<03:14,  2.98it/s]

 54%|█████▍    | 684/1261 [03:42<03:03,  3.15it/s]

 54%|█████▍    | 685/1261 [03:42<02:54,  3.29it/s]

 54%|█████▍    | 686/1261 [03:42<02:53,  3.32it/s]

 54%|█████▍    | 687/1261 [03:43<03:41,  2.59it/s]

 55%|█████▍    | 688/1261 [03:43<03:25,  2.79it/s]

 55%|█████▍    | 689/1261 [03:43<03:13,  2.96it/s]

 55%|█████▍    | 690/1261 [03:44<03:06,  3.06it/s]

 55%|█████▍    | 691/1261 [03:44<02:56,  3.24it/s]

 55%|█████▍    | 692/1261 [03:44<02:50,  3.34it/s]

 55%|█████▍    | 693/1261 [03:44<02:44,  3.45it/s]

 55%|█████▌    | 694/1261 [03:45<02:40,  3.53it/s]

 55%|█████▌    | 695/1261 [03:45<02:36,  3.62it/s]

 55%|█████▌    | 696/1261 [03:45<02:42,  3.47it/s]

 55%|█████▌    | 697/1261 [03:46<02:37,  3.58it/s]

 55%|█████▌    | 698/1261 [03:46<02:35,  3.63it/s]

 55%|█████▌    | 699/1261 [03:46<02:34,  3.64it/s]

 56%|█████▌    | 700/1261 [03:46<02:34,  3.63it/s]

 56%|█████▌    | 701/1261 [03:47<02:36,  3.59it/s]

 56%|█████▌    | 702/1261 [03:47<02:33,  3.63it/s]

 56%|█████▌    | 703/1261 [03:47<02:30,  3.70it/s]

 56%|█████▌    | 704/1261 [03:47<02:31,  3.69it/s]

 56%|█████▌    | 705/1261 [03:48<02:32,  3.64it/s]

 56%|█████▌    | 706/1261 [03:48<02:31,  3.66it/s]

 56%|█████▌    | 707/1261 [03:48<02:34,  3.58it/s]

 56%|█████▌    | 708/1261 [03:49<02:36,  3.53it/s]

 56%|█████▌    | 709/1261 [03:49<02:38,  3.48it/s]

 56%|█████▋    | 710/1261 [03:49<02:42,  3.39it/s]

 56%|█████▋    | 711/1261 [03:50<02:43,  3.37it/s]

 56%|█████▋    | 712/1261 [03:50<02:50,  3.22it/s]

 57%|█████▋    | 713/1261 [03:51<03:40,  2.48it/s]

 57%|█████▋    | 714/1261 [03:51<03:23,  2.69it/s]

 57%|█████▋    | 715/1261 [03:51<03:11,  2.85it/s]

 57%|█████▋    | 716/1261 [03:52<03:20,  2.71it/s]

 57%|█████▋    | 717/1261 [03:52<03:16,  2.77it/s]

 57%|█████▋    | 718/1261 [03:52<03:31,  2.57it/s]

 57%|█████▋    | 719/1261 [03:53<03:59,  2.26it/s]

 57%|█████▋    | 720/1261 [03:53<04:06,  2.19it/s]

 57%|█████▋    | 721/1261 [03:54<03:43,  2.42it/s]

 57%|█████▋    | 722/1261 [03:54<03:29,  2.57it/s]

 57%|█████▋    | 723/1261 [03:55<03:57,  2.27it/s]

 57%|█████▋    | 724/1261 [03:55<04:05,  2.18it/s]

 57%|█████▋    | 725/1261 [03:56<04:17,  2.08it/s]

 58%|█████▊    | 726/1261 [03:56<04:07,  2.16it/s]

 58%|█████▊    | 727/1261 [03:56<03:42,  2.40it/s]

 58%|█████▊    | 728/1261 [03:57<03:34,  2.49it/s]

 58%|█████▊    | 729/1261 [03:57<03:44,  2.37it/s]

 58%|█████▊    | 730/1261 [03:57<03:23,  2.62it/s]

 58%|█████▊    | 731/1261 [03:58<03:08,  2.81it/s]

 58%|█████▊    | 732/1261 [03:58<03:00,  2.94it/s]

 58%|█████▊    | 733/1261 [03:58<02:50,  3.10it/s]

 58%|█████▊    | 734/1261 [03:59<02:44,  3.20it/s]

 58%|█████▊    | 735/1261 [03:59<02:57,  2.96it/s]

 58%|█████▊    | 736/1261 [03:59<02:50,  3.09it/s]

 58%|█████▊    | 737/1261 [04:00<02:42,  3.23it/s]

 59%|█████▊    | 738/1261 [04:00<03:02,  2.87it/s]

 59%|█████▊    | 739/1261 [04:00<02:56,  2.96it/s]

 59%|█████▊    | 740/1261 [04:01<02:52,  3.02it/s]

 59%|█████▉    | 741/1261 [04:01<03:01,  2.86it/s]

 59%|█████▉    | 742/1261 [04:01<02:50,  3.04it/s]

 59%|█████▉    | 743/1261 [04:02<02:42,  3.19it/s]

 59%|█████▉    | 744/1261 [04:02<02:43,  3.17it/s]

 59%|█████▉    | 745/1261 [04:02<02:39,  3.23it/s]

 59%|█████▉    | 746/1261 [04:03<02:37,  3.27it/s]

 59%|█████▉    | 747/1261 [04:03<02:30,  3.42it/s]

 59%|█████▉    | 748/1261 [04:03<02:30,  3.41it/s]

 59%|█████▉    | 749/1261 [04:03<02:26,  3.49it/s]

 59%|█████▉    | 750/1261 [04:04<02:27,  3.47it/s]

 60%|█████▉    | 751/1261 [04:04<02:23,  3.55it/s]

 60%|█████▉    | 752/1261 [04:04<02:23,  3.55it/s]

 60%|█████▉    | 753/1261 [04:04<02:21,  3.58it/s]

 60%|█████▉    | 754/1261 [04:05<02:20,  3.61it/s]

 60%|█████▉    | 755/1261 [04:05<02:19,  3.63it/s]

 60%|█████▉    | 756/1261 [04:05<02:22,  3.55it/s]

 60%|██████    | 757/1261 [04:06<02:56,  2.86it/s]

 60%|██████    | 758/1261 [04:06<02:54,  2.88it/s]

 60%|██████    | 759/1261 [04:06<02:44,  3.06it/s]

 60%|██████    | 760/1261 [04:07<02:36,  3.20it/s]

 60%|██████    | 761/1261 [04:07<02:30,  3.33it/s]

 60%|██████    | 762/1261 [04:07<02:27,  3.39it/s]

 61%|██████    | 763/1261 [04:08<02:28,  3.36it/s]

 61%|██████    | 764/1261 [04:08<03:15,  2.55it/s]

 61%|██████    | 765/1261 [04:08<03:02,  2.72it/s]

 61%|██████    | 766/1261 [04:09<02:52,  2.87it/s]

 61%|██████    | 767/1261 [04:09<02:42,  3.04it/s]

 61%|██████    | 768/1261 [04:09<02:39,  3.09it/s]

 61%|██████    | 769/1261 [04:10<02:56,  2.79it/s]

 61%|██████    | 770/1261 [04:10<02:42,  3.01it/s]

 61%|██████    | 771/1261 [04:10<02:33,  3.18it/s]

 61%|██████    | 772/1261 [04:11<02:36,  3.13it/s]

 61%|██████▏   | 773/1261 [04:11<02:33,  3.19it/s]

 61%|██████▏   | 774/1261 [04:11<02:28,  3.28it/s]

 61%|██████▏   | 775/1261 [04:12<02:25,  3.35it/s]

 62%|██████▏   | 776/1261 [04:12<02:25,  3.33it/s]

 62%|██████▏   | 777/1261 [04:12<02:59,  2.69it/s]

 62%|██████▏   | 778/1261 [04:13<03:01,  2.66it/s]

 62%|██████▏   | 779/1261 [04:13<03:01,  2.66it/s]

 62%|██████▏   | 780/1261 [04:14<03:17,  2.43it/s]

 62%|██████▏   | 781/1261 [04:14<03:40,  2.18it/s]

 62%|██████▏   | 782/1261 [04:15<03:27,  2.31it/s]

 62%|██████▏   | 783/1261 [04:15<03:18,  2.41it/s]

 62%|██████▏   | 784/1261 [04:15<03:15,  2.44it/s]

 62%|██████▏   | 785/1261 [04:16<03:05,  2.56it/s]

 62%|██████▏   | 786/1261 [04:16<03:30,  2.26it/s]

 62%|██████▏   | 787/1261 [04:17<03:27,  2.28it/s]

 62%|██████▏   | 788/1261 [04:17<03:15,  2.41it/s]

 63%|██████▎   | 789/1261 [04:17<03:05,  2.55it/s]

 63%|██████▎   | 790/1261 [04:18<02:53,  2.71it/s]

 63%|██████▎   | 791/1261 [04:18<03:11,  2.46it/s]

 63%|██████▎   | 792/1261 [04:19<03:10,  2.46it/s]

 63%|██████▎   | 793/1261 [04:19<02:58,  2.62it/s]

 63%|██████▎   | 794/1261 [04:19<02:45,  2.81it/s]

 63%|██████▎   | 795/1261 [04:20<02:36,  2.99it/s]

 63%|██████▎   | 796/1261 [04:20<02:27,  3.15it/s]

 63%|██████▎   | 797/1261 [04:20<02:20,  3.29it/s]

 63%|██████▎   | 798/1261 [04:20<02:17,  3.37it/s]

 63%|██████▎   | 799/1261 [04:21<02:13,  3.45it/s]

 63%|██████▎   | 800/1261 [04:21<02:09,  3.55it/s]

 64%|██████▎   | 801/1261 [04:21<02:10,  3.54it/s]

 64%|██████▎   | 802/1261 [04:21<02:08,  3.56it/s]

 64%|██████▎   | 803/1261 [04:22<02:06,  3.61it/s]

 64%|██████▍   | 804/1261 [04:22<02:04,  3.68it/s]

 64%|██████▍   | 805/1261 [04:22<02:02,  3.72it/s]

 64%|██████▍   | 806/1261 [04:23<02:03,  3.68it/s]

 64%|██████▍   | 807/1261 [04:23<02:02,  3.69it/s]

 64%|██████▍   | 808/1261 [04:23<02:02,  3.68it/s]

 64%|██████▍   | 809/1261 [04:24<02:22,  3.17it/s]

 64%|██████▍   | 810/1261 [04:24<02:29,  3.02it/s]

 64%|██████▍   | 811/1261 [04:24<02:23,  3.14it/s]

 64%|██████▍   | 812/1261 [04:24<02:17,  3.27it/s]

 64%|██████▍   | 813/1261 [04:25<02:12,  3.37it/s]

 65%|██████▍   | 814/1261 [04:25<02:13,  3.36it/s]

 65%|██████▍   | 815/1261 [04:25<02:29,  2.98it/s]

 65%|██████▍   | 816/1261 [04:26<02:28,  2.99it/s]

 65%|██████▍   | 817/1261 [04:26<02:24,  3.07it/s]

 65%|██████▍   | 818/1261 [04:26<02:22,  3.11it/s]

 65%|██████▍   | 819/1261 [04:27<02:16,  3.24it/s]

 65%|██████▌   | 820/1261 [04:27<02:11,  3.36it/s]

 65%|██████▌   | 821/1261 [04:27<02:08,  3.44it/s]

 65%|██████▌   | 822/1261 [04:27<02:05,  3.50it/s]

 65%|██████▌   | 823/1261 [04:28<02:03,  3.56it/s]

 65%|██████▌   | 824/1261 [04:28<02:00,  3.61it/s]

 65%|██████▌   | 825/1261 [04:28<02:00,  3.63it/s]

 66%|██████▌   | 826/1261 [04:29<02:01,  3.58it/s]

 66%|██████▌   | 827/1261 [04:29<01:59,  3.63it/s]

 66%|██████▌   | 828/1261 [04:29<02:01,  3.56it/s]

 66%|██████▌   | 829/1261 [04:29<02:02,  3.53it/s]

 66%|██████▌   | 830/1261 [04:30<02:03,  3.50it/s]

 66%|██████▌   | 831/1261 [04:30<02:04,  3.46it/s]

 66%|██████▌   | 832/1261 [04:30<02:02,  3.49it/s]

 66%|██████▌   | 833/1261 [04:31<02:01,  3.51it/s]

 66%|██████▌   | 834/1261 [04:31<02:02,  3.50it/s]

 66%|██████▌   | 835/1261 [04:31<02:00,  3.54it/s]

 66%|██████▋   | 836/1261 [04:31<01:59,  3.57it/s]

 66%|██████▋   | 837/1261 [04:32<01:56,  3.63it/s]

 66%|██████▋   | 838/1261 [04:32<01:59,  3.54it/s]

 67%|██████▋   | 839/1261 [04:32<01:59,  3.52it/s]

 67%|██████▋   | 840/1261 [04:33<02:01,  3.48it/s]

 67%|██████▋   | 841/1261 [04:33<02:03,  3.40it/s]

 67%|██████▋   | 842/1261 [04:33<02:08,  3.26it/s]

 67%|██████▋   | 843/1261 [04:33<02:05,  3.34it/s]

 67%|██████▋   | 844/1261 [04:34<02:18,  3.02it/s]

 67%|██████▋   | 845/1261 [04:34<02:17,  3.02it/s]

 67%|██████▋   | 846/1261 [04:35<02:15,  3.07it/s]

 67%|██████▋   | 847/1261 [04:35<02:12,  3.13it/s]

 67%|██████▋   | 848/1261 [04:35<02:23,  2.87it/s]

 67%|██████▋   | 849/1261 [04:36<02:29,  2.76it/s]

 67%|██████▋   | 850/1261 [04:36<02:29,  2.75it/s]

 67%|██████▋   | 851/1261 [04:36<02:27,  2.79it/s]

 68%|██████▊   | 852/1261 [04:37<02:19,  2.94it/s]

 68%|██████▊   | 853/1261 [04:37<02:22,  2.87it/s]

 68%|██████▊   | 854/1261 [04:37<02:22,  2.85it/s]

 68%|██████▊   | 855/1261 [04:38<02:20,  2.88it/s]

 68%|██████▊   | 856/1261 [04:38<02:20,  2.88it/s]

 68%|██████▊   | 857/1261 [04:38<02:14,  3.01it/s]

 68%|██████▊   | 858/1261 [04:39<02:18,  2.91it/s]

 68%|██████▊   | 859/1261 [04:39<02:10,  3.08it/s]

 68%|██████▊   | 860/1261 [04:39<02:03,  3.25it/s]

 68%|██████▊   | 861/1261 [04:40<01:58,  3.38it/s]

 68%|██████▊   | 862/1261 [04:40<01:56,  3.44it/s]

 68%|██████▊   | 863/1261 [04:40<01:51,  3.56it/s]

 69%|██████▊   | 864/1261 [04:40<01:48,  3.65it/s]

 69%|██████▊   | 865/1261 [04:41<01:49,  3.63it/s]

 69%|██████▊   | 866/1261 [04:41<01:49,  3.62it/s]

 69%|██████▉   | 867/1261 [04:41<01:48,  3.64it/s]

 69%|██████▉   | 868/1261 [04:41<01:47,  3.66it/s]

 69%|██████▉   | 869/1261 [04:42<01:45,  3.72it/s]

 69%|██████▉   | 870/1261 [04:42<01:45,  3.69it/s]

 69%|██████▉   | 871/1261 [04:42<01:47,  3.63it/s]

 69%|██████▉   | 872/1261 [04:43<01:47,  3.62it/s]

 69%|██████▉   | 873/1261 [04:43<01:48,  3.57it/s]

 69%|██████▉   | 874/1261 [04:43<01:49,  3.54it/s]

 69%|██████▉   | 875/1261 [04:43<01:53,  3.40it/s]

 69%|██████▉   | 876/1261 [04:44<01:55,  3.34it/s]

 70%|██████▉   | 877/1261 [04:44<01:56,  3.31it/s]

 70%|██████▉   | 878/1261 [04:44<01:55,  3.32it/s]

 70%|██████▉   | 879/1261 [04:45<01:53,  3.37it/s]

 70%|██████▉   | 880/1261 [04:45<01:54,  3.34it/s]

 70%|██████▉   | 881/1261 [04:45<02:06,  3.01it/s]

 70%|██████▉   | 882/1261 [04:46<02:19,  2.72it/s]

 70%|███████   | 883/1261 [04:46<02:18,  2.72it/s]

 70%|███████   | 884/1261 [04:46<02:10,  2.88it/s]

 70%|███████   | 885/1261 [04:47<02:07,  2.94it/s]

 70%|███████   | 886/1261 [04:47<02:05,  2.98it/s]

 70%|███████   | 887/1261 [04:47<02:01,  3.09it/s]

 70%|███████   | 888/1261 [04:48<01:58,  3.14it/s]

 70%|███████   | 889/1261 [04:48<01:57,  3.17it/s]

 71%|███████   | 890/1261 [04:48<01:57,  3.15it/s]

 71%|███████   | 891/1261 [04:49<01:54,  3.22it/s]

 71%|███████   | 892/1261 [04:49<01:52,  3.28it/s]

 71%|███████   | 893/1261 [04:49<01:51,  3.30it/s]

 71%|███████   | 894/1261 [04:50<01:48,  3.37it/s]

 71%|███████   | 895/1261 [04:50<01:46,  3.44it/s]

 71%|███████   | 896/1261 [04:50<01:43,  3.52it/s]

 71%|███████   | 897/1261 [04:50<01:41,  3.60it/s]

 71%|███████   | 898/1261 [04:51<01:40,  3.61it/s]

 71%|███████▏  | 899/1261 [04:51<01:39,  3.63it/s]

 71%|███████▏  | 900/1261 [04:51<01:41,  3.56it/s]

 71%|███████▏  | 901/1261 [04:51<01:39,  3.61it/s]

 72%|███████▏  | 902/1261 [04:52<01:40,  3.59it/s]

 72%|███████▏  | 903/1261 [04:52<01:39,  3.60it/s]

 72%|███████▏  | 904/1261 [04:52<01:38,  3.63it/s]

 72%|███████▏  | 905/1261 [04:53<01:37,  3.66it/s]

 72%|███████▏  | 906/1261 [04:53<01:36,  3.67it/s]

 72%|███████▏  | 907/1261 [04:53<01:36,  3.67it/s]

 72%|███████▏  | 908/1261 [04:53<01:37,  3.64it/s]

 72%|███████▏  | 909/1261 [04:54<01:36,  3.64it/s]

 72%|███████▏  | 910/1261 [04:54<01:36,  3.64it/s]

 72%|███████▏  | 911/1261 [04:54<01:48,  3.21it/s]

 72%|███████▏  | 912/1261 [04:55<01:48,  3.23it/s]

 72%|███████▏  | 913/1261 [04:55<01:45,  3.31it/s]

 72%|███████▏  | 914/1261 [04:55<01:46,  3.25it/s]

 73%|███████▎  | 915/1261 [04:56<01:44,  3.31it/s]

 73%|███████▎  | 916/1261 [04:56<01:43,  3.33it/s]

 73%|███████▎  | 917/1261 [04:56<01:43,  3.32it/s]

 73%|███████▎  | 918/1261 [04:56<01:46,  3.23it/s]

 73%|███████▎  | 919/1261 [04:57<01:48,  3.15it/s]

 73%|███████▎  | 920/1261 [04:57<01:44,  3.25it/s]

 73%|███████▎  | 921/1261 [04:57<01:44,  3.25it/s]

 73%|███████▎  | 922/1261 [04:58<01:46,  3.17it/s]

 73%|███████▎  | 923/1261 [04:58<01:45,  3.19it/s]

 73%|███████▎  | 924/1261 [04:58<01:49,  3.07it/s]

 73%|███████▎  | 925/1261 [04:59<02:47,  2.01it/s]

 73%|███████▎  | 926/1261 [05:00<03:02,  1.83it/s]

 74%|███████▎  | 927/1261 [05:00<02:48,  1.98it/s]

 74%|███████▎  | 928/1261 [05:01<02:33,  2.17it/s]

 74%|███████▎  | 929/1261 [05:01<02:23,  2.31it/s]

 74%|███████▍  | 930/1261 [05:01<02:18,  2.39it/s]

 74%|███████▍  | 931/1261 [05:02<02:12,  2.49it/s]

 74%|███████▍  | 932/1261 [05:02<02:05,  2.63it/s]

 74%|███████▍  | 933/1261 [05:02<01:59,  2.75it/s]

 74%|███████▍  | 934/1261 [05:03<01:54,  2.85it/s]

 74%|███████▍  | 935/1261 [05:03<01:50,  2.95it/s]

 74%|███████▍  | 936/1261 [05:03<01:47,  3.03it/s]

 74%|███████▍  | 937/1261 [05:04<01:47,  3.02it/s]

 74%|███████▍  | 938/1261 [05:04<01:46,  3.04it/s]

 74%|███████▍  | 939/1261 [05:04<01:45,  3.06it/s]

 75%|███████▍  | 940/1261 [05:05<01:51,  2.89it/s]

 75%|███████▍  | 941/1261 [05:05<01:57,  2.73it/s]

 75%|███████▍  | 942/1261 [05:06<02:03,  2.59it/s]

 75%|███████▍  | 943/1261 [05:06<01:55,  2.76it/s]

 75%|███████▍  | 944/1261 [05:06<01:59,  2.64it/s]

 75%|███████▍  | 945/1261 [05:07<02:05,  2.52it/s]

 75%|███████▌  | 946/1261 [05:07<02:08,  2.46it/s]

 75%|███████▌  | 947/1261 [05:08<02:03,  2.54it/s]

 75%|███████▌  | 948/1261 [05:08<01:59,  2.62it/s]

 75%|███████▌  | 949/1261 [05:08<02:14,  2.32it/s]

 75%|███████▌  | 950/1261 [05:09<02:15,  2.29it/s]

 75%|███████▌  | 951/1261 [05:09<02:22,  2.18it/s]

 75%|███████▌  | 952/1261 [05:10<02:31,  2.04it/s]

 76%|███████▌  | 953/1261 [05:11<02:33,  2.00it/s]

 76%|███████▌  | 954/1261 [05:11<02:27,  2.08it/s]

 76%|███████▌  | 955/1261 [05:11<02:12,  2.32it/s]

 76%|███████▌  | 956/1261 [05:12<02:09,  2.35it/s]

 76%|███████▌  | 957/1261 [05:12<02:00,  2.52it/s]

 76%|███████▌  | 958/1261 [05:12<01:54,  2.65it/s]

 76%|███████▌  | 959/1261 [05:13<01:50,  2.74it/s]

 76%|███████▌  | 960/1261 [05:13<01:43,  2.90it/s]

 76%|███████▌  | 961/1261 [05:13<01:41,  2.97it/s]

 76%|███████▋  | 962/1261 [05:14<01:39,  3.00it/s]

 76%|███████▋  | 963/1261 [05:14<01:35,  3.13it/s]

 76%|███████▋  | 964/1261 [05:14<01:33,  3.18it/s]

 77%|███████▋  | 965/1261 [05:15<01:38,  2.99it/s]

 77%|███████▋  | 966/1261 [05:15<01:37,  3.04it/s]

 77%|███████▋  | 967/1261 [05:15<01:34,  3.09it/s]

 77%|███████▋  | 968/1261 [05:16<01:32,  3.17it/s]

 77%|███████▋  | 969/1261 [05:16<01:32,  3.15it/s]

 77%|███████▋  | 970/1261 [05:16<01:44,  2.78it/s]

 77%|███████▋  | 971/1261 [05:17<01:45,  2.74it/s]

 77%|███████▋  | 972/1261 [05:17<01:40,  2.88it/s]

 77%|███████▋  | 973/1261 [05:17<01:36,  3.00it/s]

 77%|███████▋  | 974/1261 [05:18<01:33,  3.07it/s]

 77%|███████▋  | 975/1261 [05:18<01:28,  3.25it/s]

 77%|███████▋  | 976/1261 [05:18<01:27,  3.25it/s]

 77%|███████▋  | 977/1261 [05:19<01:34,  3.01it/s]

 78%|███████▊  | 978/1261 [05:19<01:45,  2.69it/s]

 78%|███████▊  | 979/1261 [05:19<01:41,  2.77it/s]

 78%|███████▊  | 980/1261 [05:20<01:37,  2.87it/s]

 78%|███████▊  | 981/1261 [05:20<01:55,  2.42it/s]

 78%|███████▊  | 982/1261 [05:21<02:01,  2.29it/s]

 78%|███████▊  | 983/1261 [05:21<02:03,  2.25it/s]

 78%|███████▊  | 984/1261 [05:22<02:15,  2.04it/s]

 78%|███████▊  | 985/1261 [05:22<02:15,  2.04it/s]

 78%|███████▊  | 986/1261 [05:23<02:11,  2.09it/s]

 78%|███████▊  | 987/1261 [05:23<02:06,  2.17it/s]

 78%|███████▊  | 988/1261 [05:24<02:02,  2.22it/s]

 78%|███████▊  | 989/1261 [05:24<01:56,  2.34it/s]

 79%|███████▊  | 990/1261 [05:24<01:55,  2.35it/s]

 79%|███████▊  | 991/1261 [05:25<02:08,  2.11it/s]

 79%|███████▊  | 992/1261 [05:26<02:15,  1.98it/s]

 79%|███████▊  | 993/1261 [05:26<02:11,  2.04it/s]

 79%|███████▉  | 994/1261 [05:27<02:20,  1.90it/s]

 79%|███████▉  | 995/1261 [05:27<02:18,  1.92it/s]

 79%|███████▉  | 996/1261 [05:28<02:08,  2.06it/s]

 79%|███████▉  | 997/1261 [05:28<02:02,  2.15it/s]

 79%|███████▉  | 998/1261 [05:28<02:03,  2.14it/s]

 79%|███████▉  | 999/1261 [05:29<01:53,  2.31it/s]

 79%|███████▉  | 1000/1261 [05:29<01:42,  2.54it/s]

 79%|███████▉  | 1001/1261 [05:29<01:34,  2.74it/s]

 79%|███████▉  | 1002/1261 [05:30<01:31,  2.83it/s]

 80%|███████▉  | 1003/1261 [05:30<01:28,  2.92it/s]

 80%|███████▉  | 1004/1261 [05:30<01:28,  2.91it/s]

 80%|███████▉  | 1005/1261 [05:31<01:27,  2.94it/s]

 80%|███████▉  | 1006/1261 [05:31<01:49,  2.33it/s]

 80%|███████▉  | 1007/1261 [05:32<02:16,  1.86it/s]

 80%|███████▉  | 1008/1261 [05:33<02:08,  1.97it/s]

 80%|████████  | 1009/1261 [05:33<02:02,  2.06it/s]

 80%|████████  | 1010/1261 [05:34<02:05,  1.99it/s]

 80%|████████  | 1011/1261 [05:34<02:03,  2.02it/s]

 80%|████████  | 1012/1261 [05:35<02:13,  1.86it/s]

 80%|████████  | 1013/1261 [05:35<02:17,  1.81it/s]

 80%|████████  | 1014/1261 [05:36<02:17,  1.80it/s]

 80%|████████  | 1015/1261 [05:36<02:25,  1.69it/s]

 81%|████████  | 1016/1261 [05:37<02:25,  1.69it/s]

 81%|████████  | 1017/1261 [05:38<02:20,  1.74it/s]

 81%|████████  | 1018/1261 [05:38<02:17,  1.77it/s]

 81%|████████  | 1019/1261 [05:39<02:17,  1.76it/s]

 81%|████████  | 1020/1261 [05:39<02:14,  1.79it/s]

 81%|████████  | 1021/1261 [05:40<02:20,  1.71it/s]

 81%|████████  | 1022/1261 [05:41<02:35,  1.54it/s]

 81%|████████  | 1023/1261 [05:41<02:22,  1.67it/s]

 81%|████████  | 1024/1261 [05:42<02:11,  1.80it/s]

 81%|████████▏ | 1025/1261 [05:42<02:17,  1.72it/s]

 81%|████████▏ | 1026/1261 [05:43<02:13,  1.76it/s]

 81%|████████▏ | 1027/1261 [05:43<01:58,  1.97it/s]

 82%|████████▏ | 1028/1261 [05:44<01:49,  2.14it/s]

 82%|████████▏ | 1029/1261 [05:44<01:39,  2.33it/s]

 82%|████████▏ | 1030/1261 [05:44<01:30,  2.55it/s]

 82%|████████▏ | 1031/1261 [05:45<01:24,  2.74it/s]

 82%|████████▏ | 1032/1261 [05:45<01:20,  2.86it/s]

 82%|████████▏ | 1033/1261 [05:45<01:23,  2.75it/s]

 82%|████████▏ | 1034/1261 [05:46<01:30,  2.52it/s]

 82%|████████▏ | 1035/1261 [05:46<01:28,  2.54it/s]

 82%|████████▏ | 1036/1261 [05:46<01:23,  2.69it/s]

 82%|████████▏ | 1037/1261 [05:47<01:20,  2.77it/s]

 82%|████████▏ | 1038/1261 [05:47<01:17,  2.89it/s]

 82%|████████▏ | 1039/1261 [05:47<01:12,  3.05it/s]

 82%|████████▏ | 1040/1261 [05:48<01:09,  3.17it/s]

 83%|████████▎ | 1041/1261 [05:48<01:08,  3.21it/s]

 83%|████████▎ | 1042/1261 [05:48<01:07,  3.25it/s]

 83%|████████▎ | 1043/1261 [05:49<01:07,  3.24it/s]

 83%|████████▎ | 1044/1261 [05:49<01:05,  3.31it/s]

 83%|████████▎ | 1045/1261 [05:49<01:05,  3.30it/s]

 83%|████████▎ | 1046/1261 [05:49<01:05,  3.29it/s]

 83%|████████▎ | 1047/1261 [05:50<01:05,  3.28it/s]

 83%|████████▎ | 1048/1261 [05:50<01:06,  3.22it/s]

 83%|████████▎ | 1049/1261 [05:50<01:04,  3.29it/s]

 83%|████████▎ | 1050/1261 [05:51<01:01,  3.42it/s]

 83%|████████▎ | 1051/1261 [05:51<01:00,  3.48it/s]

 83%|████████▎ | 1052/1261 [05:51<01:00,  3.47it/s]

 84%|████████▎ | 1053/1261 [05:51<01:00,  3.46it/s]

 84%|████████▎ | 1054/1261 [05:52<01:00,  3.42it/s]

 84%|████████▎ | 1055/1261 [05:52<00:58,  3.51it/s]

 84%|████████▎ | 1056/1261 [05:52<00:58,  3.53it/s]

 84%|████████▍ | 1057/1261 [05:53<00:57,  3.54it/s]

 84%|████████▍ | 1058/1261 [05:53<00:58,  3.46it/s]

 84%|████████▍ | 1059/1261 [05:53<01:00,  3.34it/s]

 84%|████████▍ | 1060/1261 [05:54<01:04,  3.13it/s]

 84%|████████▍ | 1061/1261 [05:54<01:03,  3.13it/s]

 84%|████████▍ | 1062/1261 [05:54<01:03,  3.15it/s]

 84%|████████▍ | 1063/1261 [05:55<01:15,  2.63it/s]

 84%|████████▍ | 1064/1261 [05:55<01:17,  2.55it/s]

 84%|████████▍ | 1065/1261 [05:56<01:14,  2.64it/s]

 85%|████████▍ | 1066/1261 [05:56<01:15,  2.60it/s]

 85%|████████▍ | 1067/1261 [05:56<01:13,  2.64it/s]

 85%|████████▍ | 1068/1261 [05:57<01:08,  2.80it/s]

 85%|████████▍ | 1069/1261 [05:57<01:04,  2.97it/s]

 85%|████████▍ | 1070/1261 [05:57<01:02,  3.07it/s]

 85%|████████▍ | 1071/1261 [05:57<00:58,  3.23it/s]

 85%|████████▌ | 1072/1261 [05:58<00:57,  3.27it/s]

 85%|████████▌ | 1073/1261 [05:58<00:57,  3.30it/s]

 85%|████████▌ | 1074/1261 [05:58<00:56,  3.29it/s]

 85%|████████▌ | 1075/1261 [05:59<00:56,  3.32it/s]

 85%|████████▌ | 1076/1261 [05:59<00:55,  3.34it/s]

 85%|████████▌ | 1077/1261 [05:59<00:55,  3.32it/s]

 85%|████████▌ | 1078/1261 [06:00<00:55,  3.32it/s]

 86%|████████▌ | 1079/1261 [06:00<00:55,  3.27it/s]

 86%|████████▌ | 1080/1261 [06:00<00:55,  3.24it/s]

 86%|████████▌ | 1081/1261 [06:00<00:54,  3.28it/s]

 86%|████████▌ | 1082/1261 [06:01<00:54,  3.27it/s]

 86%|████████▌ | 1083/1261 [06:01<00:53,  3.31it/s]

 86%|████████▌ | 1084/1261 [06:01<00:53,  3.33it/s]

 86%|████████▌ | 1085/1261 [06:02<00:51,  3.43it/s]

 86%|████████▌ | 1086/1261 [06:02<00:50,  3.46it/s]

 86%|████████▌ | 1087/1261 [06:02<00:50,  3.42it/s]

 86%|████████▋ | 1088/1261 [06:03<00:51,  3.35it/s]

 86%|████████▋ | 1089/1261 [06:03<00:52,  3.29it/s]

 86%|████████▋ | 1090/1261 [06:03<00:53,  3.20it/s]

 87%|████████▋ | 1091/1261 [06:03<00:51,  3.28it/s]

 87%|████████▋ | 1092/1261 [06:04<00:52,  3.25it/s]

 87%|████████▋ | 1093/1261 [06:04<00:51,  3.27it/s]

 87%|████████▋ | 1094/1261 [06:04<00:51,  3.26it/s]

 87%|████████▋ | 1095/1261 [06:05<00:53,  3.10it/s]

 87%|████████▋ | 1096/1261 [06:05<00:51,  3.21it/s]

 87%|████████▋ | 1097/1261 [06:05<00:51,  3.21it/s]

 87%|████████▋ | 1098/1261 [06:06<00:52,  3.12it/s]

 87%|████████▋ | 1099/1261 [06:06<00:50,  3.22it/s]

 87%|████████▋ | 1100/1261 [06:06<00:48,  3.30it/s]

 87%|████████▋ | 1101/1261 [06:07<00:47,  3.34it/s]

 87%|████████▋ | 1102/1261 [06:07<00:46,  3.39it/s]

 87%|████████▋ | 1103/1261 [06:07<00:46,  3.43it/s]

 88%|████████▊ | 1104/1261 [06:07<00:45,  3.42it/s]

 88%|████████▊ | 1105/1261 [06:08<00:44,  3.48it/s]

 88%|████████▊ | 1106/1261 [06:08<00:45,  3.40it/s]

 88%|████████▊ | 1107/1261 [06:08<00:45,  3.40it/s]

 88%|████████▊ | 1108/1261 [06:09<00:45,  3.35it/s]

 88%|████████▊ | 1109/1261 [06:09<00:45,  3.34it/s]

 88%|████████▊ | 1110/1261 [06:09<00:45,  3.33it/s]

 88%|████████▊ | 1111/1261 [06:10<00:45,  3.30it/s]

 88%|████████▊ | 1112/1261 [06:10<00:44,  3.31it/s]

 88%|████████▊ | 1113/1261 [06:10<00:44,  3.30it/s]

 88%|████████▊ | 1114/1261 [06:10<00:46,  3.19it/s]

 88%|████████▊ | 1115/1261 [06:11<00:46,  3.17it/s]

 89%|████████▊ | 1116/1261 [06:11<00:45,  3.18it/s]

 89%|████████▊ | 1117/1261 [06:11<00:45,  3.16it/s]

 89%|████████▊ | 1118/1261 [06:12<00:45,  3.16it/s]

 89%|████████▊ | 1119/1261 [06:12<00:46,  3.03it/s]

 89%|████████▉ | 1120/1261 [06:12<00:48,  2.91it/s]

 89%|████████▉ | 1121/1261 [06:13<00:48,  2.87it/s]

 89%|████████▉ | 1122/1261 [06:13<00:48,  2.89it/s]

 89%|████████▉ | 1123/1261 [06:14<00:47,  2.89it/s]

 89%|████████▉ | 1124/1261 [06:14<00:48,  2.80it/s]

 89%|████████▉ | 1125/1261 [06:14<00:46,  2.91it/s]

 89%|████████▉ | 1126/1261 [06:15<00:47,  2.82it/s]

 89%|████████▉ | 1127/1261 [06:15<00:48,  2.75it/s]

 89%|████████▉ | 1128/1261 [06:15<00:45,  2.94it/s]

 90%|████████▉ | 1129/1261 [06:16<00:42,  3.12it/s]

 90%|████████▉ | 1130/1261 [06:16<00:42,  3.12it/s]

 90%|████████▉ | 1131/1261 [06:16<00:48,  2.67it/s]

 90%|████████▉ | 1132/1261 [06:17<00:47,  2.69it/s]

 90%|████████▉ | 1133/1261 [06:17<00:44,  2.85it/s]

 90%|████████▉ | 1134/1261 [06:17<00:48,  2.64it/s]

 90%|█████████ | 1135/1261 [06:18<00:46,  2.70it/s]

 90%|█████████ | 1136/1261 [06:18<00:45,  2.77it/s]

 90%|█████████ | 1137/1261 [06:18<00:43,  2.87it/s]

 90%|█████████ | 1138/1261 [06:19<00:42,  2.91it/s]

 90%|█████████ | 1139/1261 [06:19<00:40,  3.03it/s]

 90%|█████████ | 1140/1261 [06:20<00:43,  2.79it/s]

 90%|█████████ | 1141/1261 [06:20<00:41,  2.92it/s]

 91%|█████████ | 1142/1261 [06:20<00:39,  2.98it/s]

 91%|█████████ | 1143/1261 [06:21<00:40,  2.91it/s]

 91%|█████████ | 1144/1261 [06:21<00:39,  2.97it/s]

 91%|█████████ | 1145/1261 [06:21<00:39,  2.94it/s]

 91%|█████████ | 1146/1261 [06:22<00:38,  2.97it/s]

 91%|█████████ | 1147/1261 [06:22<00:38,  2.94it/s]

 91%|█████████ | 1148/1261 [06:22<00:38,  2.93it/s]

 91%|█████████ | 1149/1261 [06:23<00:37,  3.03it/s]

 91%|█████████ | 1150/1261 [06:23<00:35,  3.09it/s]

 91%|█████████▏| 1151/1261 [06:23<00:36,  3.03it/s]

 91%|█████████▏| 1152/1261 [06:24<00:36,  2.95it/s]

 91%|█████████▏| 1153/1261 [06:24<00:34,  3.09it/s]

 92%|█████████▏| 1154/1261 [06:24<00:34,  3.13it/s]

 92%|█████████▏| 1155/1261 [06:24<00:34,  3.09it/s]

 92%|█████████▏| 1156/1261 [06:25<00:33,  3.13it/s]

 92%|█████████▏| 1157/1261 [06:25<00:32,  3.17it/s]

 92%|█████████▏| 1158/1261 [06:25<00:32,  3.15it/s]

 92%|█████████▏| 1159/1261 [06:26<00:33,  3.06it/s]

 92%|█████████▏| 1160/1261 [06:26<00:32,  3.09it/s]

 92%|█████████▏| 1161/1261 [06:26<00:31,  3.20it/s]

 92%|█████████▏| 1162/1261 [06:27<00:31,  3.17it/s]

 92%|█████████▏| 1163/1261 [06:27<00:31,  3.15it/s]

 92%|█████████▏| 1164/1261 [06:27<00:30,  3.20it/s]

 92%|█████████▏| 1165/1261 [06:28<00:29,  3.22it/s]

 92%|█████████▏| 1166/1261 [06:28<00:29,  3.17it/s]

 93%|█████████▎| 1167/1261 [06:28<00:30,  3.06it/s]

 93%|█████████▎| 1168/1261 [06:29<00:29,  3.19it/s]

 93%|█████████▎| 1169/1261 [06:29<00:28,  3.24it/s]

 93%|█████████▎| 1170/1261 [06:29<00:28,  3.22it/s]

 93%|█████████▎| 1171/1261 [06:29<00:28,  3.18it/s]

 93%|█████████▎| 1172/1261 [06:30<00:28,  3.14it/s]

 93%|█████████▎| 1173/1261 [06:30<00:28,  3.05it/s]

 93%|█████████▎| 1174/1261 [06:30<00:28,  3.10it/s]

 93%|█████████▎| 1175/1261 [06:31<00:28,  3.05it/s]

 93%|█████████▎| 1176/1261 [06:31<00:28,  3.01it/s]

 93%|█████████▎| 1177/1261 [06:31<00:27,  3.05it/s]

 93%|█████████▎| 1178/1261 [06:32<00:26,  3.12it/s]

 93%|█████████▎| 1179/1261 [06:32<00:26,  3.11it/s]

 94%|█████████▎| 1180/1261 [06:32<00:25,  3.17it/s]

 94%|█████████▎| 1181/1261 [06:33<00:25,  3.14it/s]

 94%|█████████▎| 1182/1261 [06:33<00:24,  3.16it/s]

 94%|█████████▍| 1183/1261 [06:33<00:25,  3.08it/s]

 94%|█████████▍| 1184/1261 [06:34<00:24,  3.16it/s]

 94%|█████████▍| 1185/1261 [06:34<00:23,  3.18it/s]

 94%|█████████▍| 1186/1261 [06:34<00:23,  3.21it/s]

 94%|█████████▍| 1187/1261 [06:35<00:23,  3.17it/s]

 94%|█████████▍| 1188/1261 [06:35<00:22,  3.18it/s]

 94%|█████████▍| 1189/1261 [06:35<00:22,  3.20it/s]

 94%|█████████▍| 1190/1261 [06:36<00:21,  3.29it/s]

 94%|█████████▍| 1191/1261 [06:36<00:21,  3.25it/s]

 95%|█████████▍| 1192/1261 [06:36<00:21,  3.24it/s]

 95%|█████████▍| 1193/1261 [06:36<00:21,  3.15it/s]

 95%|█████████▍| 1194/1261 [06:37<00:20,  3.21it/s]

 95%|█████████▍| 1195/1261 [06:37<00:20,  3.26it/s]

 95%|█████████▍| 1196/1261 [06:37<00:19,  3.28it/s]

 95%|█████████▍| 1197/1261 [06:38<00:19,  3.34it/s]

 95%|█████████▌| 1198/1261 [06:38<00:18,  3.39it/s]

 95%|█████████▌| 1199/1261 [06:38<00:18,  3.39it/s]

 95%|█████████▌| 1200/1261 [06:39<00:17,  3.41it/s]

 95%|█████████▌| 1201/1261 [06:39<00:17,  3.36it/s]

 95%|█████████▌| 1202/1261 [06:39<00:17,  3.35it/s]

 95%|█████████▌| 1203/1261 [06:39<00:17,  3.30it/s]

 95%|█████████▌| 1204/1261 [06:40<00:17,  3.33it/s]

 96%|█████████▌| 1205/1261 [06:40<00:17,  3.17it/s]

 96%|█████████▌| 1206/1261 [06:40<00:16,  3.25it/s]

 96%|█████████▌| 1207/1261 [06:41<00:17,  3.06it/s]

 96%|█████████▌| 1208/1261 [06:41<00:16,  3.13it/s]

 96%|█████████▌| 1209/1261 [06:41<00:16,  3.11it/s]

 96%|█████████▌| 1210/1261 [06:42<00:15,  3.21it/s]

 96%|█████████▌| 1211/1261 [06:42<00:15,  3.22it/s]

 96%|█████████▌| 1212/1261 [06:42<00:15,  3.20it/s]

 96%|█████████▌| 1213/1261 [06:43<00:14,  3.26it/s]

 96%|█████████▋| 1214/1261 [06:43<00:14,  3.30it/s]

 96%|█████████▋| 1215/1261 [06:43<00:14,  3.25it/s]

 96%|█████████▋| 1216/1261 [06:44<00:13,  3.28it/s]

 97%|█████████▋| 1217/1261 [06:44<00:13,  3.26it/s]

 97%|█████████▋| 1218/1261 [06:44<00:13,  3.24it/s]

 97%|█████████▋| 1219/1261 [06:44<00:13,  3.18it/s]

 97%|█████████▋| 1220/1261 [06:45<00:12,  3.19it/s]

 97%|█████████▋| 1221/1261 [06:45<00:12,  3.26it/s]

 97%|█████████▋| 1222/1261 [06:45<00:11,  3.27it/s]

 97%|█████████▋| 1223/1261 [06:46<00:11,  3.28it/s]

 97%|█████████▋| 1224/1261 [06:46<00:11,  3.36it/s]

 97%|█████████▋| 1225/1261 [06:46<00:10,  3.35it/s]

 97%|█████████▋| 1226/1261 [06:47<00:10,  3.31it/s]

 97%|█████████▋| 1227/1261 [06:47<00:10,  3.24it/s]

 97%|█████████▋| 1228/1261 [06:47<00:10,  3.22it/s]

 97%|█████████▋| 1229/1261 [06:48<00:09,  3.27it/s]

 98%|█████████▊| 1230/1261 [06:48<00:09,  3.33it/s]

 98%|█████████▊| 1231/1261 [06:48<00:08,  3.33it/s]

 98%|█████████▊| 1232/1261 [06:48<00:08,  3.37it/s]

 98%|█████████▊| 1233/1261 [06:49<00:08,  3.39it/s]

 98%|█████████▊| 1234/1261 [06:49<00:08,  3.37it/s]

 98%|█████████▊| 1235/1261 [06:49<00:07,  3.29it/s]

 98%|█████████▊| 1236/1261 [06:50<00:07,  3.33it/s]

 98%|█████████▊| 1237/1261 [06:50<00:07,  3.32it/s]

 98%|█████████▊| 1238/1261 [06:50<00:06,  3.36it/s]

 98%|█████████▊| 1239/1261 [06:50<00:06,  3.29it/s]

 98%|█████████▊| 1240/1261 [06:51<00:06,  3.30it/s]

 98%|█████████▊| 1241/1261 [06:51<00:06,  3.25it/s]

 98%|█████████▊| 1242/1261 [06:51<00:05,  3.19it/s]

 99%|█████████▊| 1243/1261 [06:52<00:05,  3.09it/s]

 99%|█████████▊| 1244/1261 [06:52<00:05,  3.18it/s]

 99%|█████████▊| 1245/1261 [06:52<00:04,  3.21it/s]

 99%|█████████▉| 1246/1261 [06:53<00:04,  3.28it/s]

 99%|█████████▉| 1247/1261 [06:53<00:04,  3.27it/s]

 99%|█████████▉| 1248/1261 [06:53<00:03,  3.28it/s]

 99%|█████████▉| 1249/1261 [06:54<00:03,  3.22it/s]

 99%|█████████▉| 1250/1261 [06:54<00:03,  3.25it/s]

 99%|█████████▉| 1251/1261 [06:54<00:03,  3.25it/s]

 99%|█████████▉| 1252/1261 [06:55<00:02,  3.15it/s]

 99%|█████████▉| 1253/1261 [06:55<00:02,  3.00it/s]

 99%|█████████▉| 1254/1261 [06:55<00:02,  2.96it/s]

100%|█████████▉| 1255/1261 [06:56<00:02,  3.00it/s]

100%|█████████▉| 1256/1261 [06:56<00:01,  3.01it/s]

100%|█████████▉| 1257/1261 [06:56<00:01,  3.08it/s]

100%|█████████▉| 1258/1261 [06:57<00:00,  3.03it/s]

100%|█████████▉| 1259/1261 [06:57<00:00,  3.08it/s]

100%|█████████▉| 1260/1261 [06:57<00:00,  2.99it/s]

In [563]:
HTML("""
<video width="960" height="540" controls>
  <source src="{0}">
</video>
""".format(output2))
Out[563]:
In [ ]: